第一题:煤球数目
题目描述
有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....
如果一共有100层,共有多少个煤球?
请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
public class Main {
public static void main(String[] args) {
long sum = 0;
long a = 0;
for(long i = 1;i <= 100;i++) {
a += i;
sum += a;
}
System.out.println(sum);
}
}
第二题:生日蜡烛
题目描述
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。
现在算起来,他一共吹熄了236根蜡烛。
请问,他从多少岁开始过生日party的?
请填写他开始过生日party的年龄数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
public class Main {
static int num=0;
public static void main(String[] args) {
for(int i=1;i<60;i++) {
int j=i;
while(num<=236) {
num+=j;
j++;
if(num==236) {
System.out.println(i);
}
}
num=0;
}
}
}
第三题:凑算式
题目描述
B DEF
A + --- + ------- = 10
C GHI
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
本题自己写的较为复杂 全排列要和这个最终的的字母的分式联系起来 看了很多博主的代码发现这个博主写的最简洁明了 巧妙运用了一个list 用过的数字就加进去 一个dfs之后记得要remove掉 然后全排列过后的最终组合就是这个list 可以看成数组 数组上9个位置 每个位置对应一个字母 然后将这些位置上的数全排列 看一看每个数字代表不同的字母的情况 哪个符合最终的字母分式
这是他的blog 南墙
以下是代码
import java.util.ArrayList;
public class 凑算式 {
public static int count = 0;
public static ArrayList<Integer> list = new ArrayList<Integer>();
public static void main(String[] args) {
f();
System.out.println(count);
}
public static void f() {
if (list.size() >= 9) {
int a1 = list.get(0) * list.get(2) * (list.get(6) * 100 + list.get(7) * 10 + list.get(8));
int a2 = list.get(1) * (list.get(6) * 100 + list.get(7) * 10 + list.get(8));
int a3 = (list.get(3) * 100 + list.get(4) * 10 + list.get(5)) * list.get(2);
if (a1 + a2 + a3 == 10 * list.get(2) * (list.get(6) * 100 + list.get(7) * 10 + list.get(8))) {
count++;
}
return;
}
for (int i = 1; i <= 9; i++) {
if (!list.contains(i)) {
list.add(i);
f();
list.remove(list.size() - 1);
}
}
}
}