目录
抽签
生日蜡烛
抽签
你的朋友提议玩一个游戏:将写有数字的 n 个纸片放入口袋中,你可以从口袋中抽取 4 次纸
片,每次记下纸片上的数字后都将其放回口袋中。如果这 4 个数字的和是 m,就是你赢,否
则就是你的朋友赢。你挑战了好几回,结果一次也没赢过,于是怒而撕破口袋,取出所有纸
片,检查自己是否真的有赢的可能性。请你编写一个程序,判断当纸片上所写的数字是 k1,
k2, …, kn时,是否存在抽取 4 次和为 m 的方案。如果存在,输出 Yes;否则,输出 No。
【限制条件】
l 1 ≤ n ≤?50
l 1 ≤ m ≤?108
l 1 ≤ ki ≤?10
【输入】
n = 3
m = 10
k = {1, 3, 5}
【输出】
Yes(例如4次抽取的结果是1、1、3、5,和就是10)
【输入】
n = 3
m = 9
k = {1, 3, 5}
【输出】
No(不存在和为9的抽取方案)
【输出格式】
3
10
1 3 5
【输出格式】
NO
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int n,m;
int k[] = new int[50];
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
for(int i = 0;i < n;i++) {
k[i] = sc.nextInt();
}
boolean f = false;//是否找到和为m的组合的标记
// 通过四重循环枚举所有方案
for(int a = 0;a < n;a++) {
for(int b = 0;b < n;b++) {
for(int c = 0;c < n;c++) {
for(int d = 0;d < n;d++) {
if(k[a] + k[b] + k[c] + k[d] == m) {
f = true;
}
}
}
}
}
if(f)
System.out.println("Yes");
else
System.out.println("NO");
return;
}
}
生日蜡烛
某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的?
public class Main {
public static void main(String[] args) {
for(int i = 1;i < 100;i++) {//假设他可以活100岁,遍历1~100岁
//假设从第i年开始吹蜡烛
int s = i;//吹蜡烛总数
int n = i;//今年吹的蜡烛数
while(true){
n++;
s=s+n;
if(s == 236) {
System.out.print(i);
break;
}
if(s > 236)
break;
}
}
}
}
public class Main {
public static void main(String[] args) {
for(int i = 1;i < 100;i++) {//假设他可以活100岁,遍历1~100岁
int s = 0;//吹蜡烛总数
for(int n = i;n < 100;n++) {
if(s < 236) {
s += n;
}else if(s == 236) {
System.out.println(i);
return;
}else {
break;
}
}
}
}
}
【答案】26?
|