题目一.
具体思路:
这里就是,一个简单的解方程的一个思路,首先我们要理清楚,这道题,这里面的思路
A-B=a
B-C=b
A+B=c
B+C=d
由上面的关系得出下面的解
A=(a + c)/2
B1=(b+d)/2
B2=(c-a)/2
C=(b-d)/2
具体代码:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
int d = scanner.nextInt();
int A = (a + c) / 2;
int C = (d - b) / 2;
int B1 = (b + d) / 2;
int B2 = (c - a) / 2;
if (B1 != B2) {
System.out.print("No");
} else {
System.out.print(A + " " + B2 + " " + C);
}
}
}
题目二
具体思路:
题目的本意就是将10进制的数转换成N进制。N(2 ≤ N ≤ 16)可以看出进制最多可以到16进
制.
我们首先要知道进制的本质,
知道这个之后,我们要明白x怎么得到
我这里举个简单的例子.
123 => 123 %10=3 123 / 10 =12
12 %10 =2 12 /10=1
1%10 =1 1/10=0
主要思路:
- 输入两个整数m和n,m表示要转换的十进制数,n表示要转换的进制
- 定义一个StringBuilder用于存储转换结果
- 定义table字符串存储0-9和A-F,代表2-16进制的所有字符
- 用flag标记m是否为负数,如果是负数将m转为正数处理,处理结束后如果flag为true需要在结果头部添加负号
- 当m为0时,直接添加’0’到结果中
- 当m不为0时,重复以下过程:
6.1 将m除以n,得到余数index
6.2 从table字符串取出index位置的字符,添加到结果头部
6.3 m /= n,继续循环
具体代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int m = in.nextInt();
int n = in.nextInt();
StringBuilder s = new StringBuilder();
String table = "0123456789ABCDEF";
//用来存储2-16进制中所有的可能
boolean flag = false; //标记下有没有加负号
if(m < 0){
m = -m;
flag = true;
//本身是负数,我们改为正数了。标记下
}
if(m == 0){
s.append('0');
}
while (m != 0) {
s.append(table.charAt(m % n));
m /= n;
}
if(flag){
s.append('-');
}
s.reverse();
System.out.println(s);
}
}
}