题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明和他的表弟一起去看电影,有人问他们的年龄。小明说:今年是我们的幸运年啊。我出生年份的四位数字加起来刚好是我的年龄。表弟的也是如此。已知今年是 20142014 年,并且,小明说的年龄指的是周岁。
请推断并填写出小明的出生年份。
运行限制
最大运行时间:1s
最大运行内存: 128M
暴力求解。。
原来的错误代码①:
int k = 0;int c = 0;
for(int i = 2013;i>=1970;i--) {
int sum=0;
while(i!=0) {//这个直接用了i,改变了i的值,结果肯定错!要用一个数来代替i
sum+=i%10;
i/=10;
}
if(sum + i == 2014 ) {
k=i;
c++;
if(c==2) {
break;
}
}
}
System.out.println(k);
}.
错误代码②:
int k = 0;int c = 0;
for(int i = 2013;i>=1970;i--) {
int sum=0;
int x = i;//这里有用了x代替i
while(x!=0) {
sum+=x%10;
x/=10;
}
if(sum + x == 2014 ) {//但是这里+的也是用的x,是不对的,我们要用的是原来那个i
k=i;
c++;
if(c==2) {
break;
}
}
}
System.out.println(k);
}
AC①:
int k = 0;int c = 0;
for(int i = 2013;i>=1970;i--) {
int x = i;//x代替i
int sum=0;
while(x!=0) {
sum+=x%10;
x/=10;
}
if(sum + i == 2014 ) {//注意是加i
k=i;
c++;
if(c==2) {
break;
}
}
}
System.out.println(k);
}
AC②:
public class Main{
public static void main(String[] args){
int k = 0;int c = 0;
for(int i = 2013;i>=1970;i--) {
if(f(i) + i == 2014 ) {
k=i;
c++;
if(c==2) {
break;
}
}
}
System.out.println(k);
}
public static int f(int i) {//这里是构造了一个方法来计算该年份四数之和
int sum=0;
while(i!=0) {
sum+=i%10;
i/=10;
}
return sum;
}
}