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);
}
}
}