目录
题目一
题目描述
看这个算式:
☆☆☆ + ☆☆☆ = ☆☆☆
如果每个五角星代表 11 ~ 99 的不同的数字。
这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意: 111 + 222 = 333111+222=333 是错误的填写法! 因为每个数字必须是不同的! 也就是说:11 ~ 99中的所有数字,每个必须出现且仅出现一次!
注意:不包括数字 “0”!
注意: 满足加法交换率的式子算两种不同的答案。 所以答案肯定是个偶数!
代码实现
public class 算式问题 {
static int check(int a, int b, int c) {
int flag[] = new int[11];
//初始状态全为0,表示没出现过
for(int i = 0; i < 10; i++) {
flag[i] = 0;
}
//因为不包括数字0,所以将flag[0]置为1
flag[0] = 1;
while(a != 0) {
if(flag[a%10] == 1) return 0;
else flag[a%10] = 1;
if(flag[b%10] == 1) return 0;
else flag[b%10] = 1;
if(flag[c%10] == 1) return 0;
else flag[c%10] = 1;
a = a / 10;
b = b / 10;
c = c / 10;
}
return 1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int ans = 0;
for(int a = 123; a <= 987; a++) {
for(int b = 123; b <= 987-a; b++) {//a+b最大=987,所以限定b的范围也就是限定了c的范围
int c = a + b;
if(check(a, b, c) == 1) {
ans++;
System.out.println(a+"+"+b+"="+c);
}
}
}
System.out.println(ans);
}
}
题目二
题目描述
学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 St 。
例如 S1 = 1, S2 = 2, S3 = 4, S4 = 6,· · ·S1=1,S2=2,S3=4,S4=6,⋅⋅⋅ 。
现在小明想知道,当 t = 100 时,St 是多少?即 S100 是多少?
代码实现
public class 求值 {
//统计约数的个数
static int cnt(int a) {
int ans = 0;
for(int i = 1; i <= a; i++) {
if(a % i == 0) ans++;
}
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1; true; i++) {
System.out.println(cnt(i)+" "+i);
if(cnt(i) == 100) break;
}
}
}
题目三
题目描述
如果一个分数的分子和分母的最大公约数是 11,这个分数称为既约分数。
例如 \frac{3}{4} ,\frac{1}{8} ,\frac{7}{1}, 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1 和 2020)?
代码实现
public class 既约分数 {
//最小公约数
static int gcd(int a, int b) {
return a%b != 0 ? gcd(b, a%b) : b;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int ans = 0;
for(int i = 1; i <= 2020; i++) {
for(int j = 1; j <= 2020; j++) {
if(gcd(i,j) == 1) ans++;
}
}
System.out.println(ans);
}
}
题目四
题目描述
古代中国使用天干地支来记录当前的年份。
天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。
地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。
将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。
2020 年是庚子年。
每过一年,天干和地支都会移动到下一个。例如 2021 年是辛丑年。
每过 60 年,天干会循环 6 轮,地支会循环 5 轮,所以天干地支纪年每 60 年轮回一次。例如 1900 年,1960 年,2020 年都是庚子年。
给定一个公元纪年的年份,请输出这一年的天干地支年份。
输入描述
输入一行包含一个正整数,表示公元年份。
其中有 ,输入的公元年份为不超过 9999 的正整数。
输出描述
输入一行包含一个正整数,表示公元年份。
输入输出样例
示例
输入
2020
输出
gengzi
代码实现
import java.util.Scanner;
public class 天干地支 {
//易知0000年是庚申年
static String[] tg = new String[] {"geng", "xin", "ren", "gui", "jia", "yi" , "bing", "ding", "wu", "ji"};
static String[] dz = new String[] {"shen", "you", "xu", "hai", "zi", "chou", "yin", "mou", "chen", "si", "wu", "wei"};
public static void main(String[] args) {
// TODO Auto-generated method stub
int year;
Scanner in = new Scanner(System.in);
year = in.nextInt();
System.out.println(tg[year%10]+""+dz[year%12]);
}
}