每日一题04

1.计算糖果

题目描述:

A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。

示例:

输入:
//输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。
1 -2 3 4
输出:
//输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
2 1 3

OJ链接

解题思路:

相当于是一道数学题,关联两个计算出来A、B值,在选择另外两个判断B的值是否一致,一致,则计算C 输出A.B.C的值,否则输出NO

代码如下:

import java.util.*;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
    
    
            int[] arr = new int[4];
            for (int i = 0; i < arr.length; i++) {
    
    
                arr[i] = scan.nextInt();
            }
            int a = (arr[0] + arr[2]) / 2;
            int myB = a - arr[0];
            int b = (arr[1] + arr[3]) / 2;
            if (myB != b) {
    
    
                System.out.println("No");
            } else {
    
    
                int c = b - arr[1];
                System.out.println(a + " " + b + " " + c);
            }
        }
    }
}

2.进制转换

题目描述:

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

示例:

输入:
//输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
7 2
//为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
111

OJ链接

解题思路:

1.转换数字,例如123它的每一位数字:123%10是123的个位数;123/10 = 12 ,12%10 = 2 12/10 = 1 1%10 = 1, 1/10 = 0 可以算出其他位数,
2.由于题目所说大于9以后对应的数字规则参考16进制(比如10用A表示),所以
新建一个table存入需要转换的数字,当算出来的数字在table中取对于的数字,最后进行输出

代码如下:

import java.util.*;
public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
    
    
            int m = sc.nextInt();
            int n = sc.nextInt();
            StringBuilder sb = new StringBuilder();
            String table = "0123456789ABCDEF";//小写有的用力不能通过
            
            boolean flg = false;//判断是否为负数
            if (m < 0) {
    
    
                m = -m;//如果为负数 -123先不考虑-,最后做判断
                flg = true;
            }
            while (m != 0) {
    
    
                sb.append(table.charAt(m % n)); //把每位数都从table对应下标取出对应数字
                m = m / n;
            }
            if (flg) {
    
    // flg == true 为负数
                sb.append('-');//3 2 1 -
            } 
            sb.reverse();// 反转 -123
            System.out.println(sb);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/ccyzq/article/details/121732936
今日推荐