有如下的加法算式。其中每个汉字代表一个数字。
(如果存在对齐问题,可参见【图1.png】)
年
大年
过大年
能过大年
怎能过大年
我怎能过大年
+让我怎能过大年
----------------------
能能能能能能能
请填写“让我怎能过大年” 所代表的整数。

如果以后叫我们这样做:
但上面这个程序是没有解的
(如果存在对齐问题,可参见【图1.png】)
年
大年
过大年
能过大年
怎能过大年
我怎能过大年
+让我怎能过大年
----------------------
能能能能能能能
请填写“让我怎能过大年” 所代表的整数。
所有数字连在一起,中间不要空格
源代码:注意注释的是为了测试用的
#include<stdio.h>
int main()
{
int sum;
int i;
int temp;
int a,b,c,d,e,f,g;//代表每一位上的数字
for(i=9992299;i>=1000000;i--)
{
a = i%10;//个位
b = i/10%10;//十位
c = i/100%10;//百位
d = i/1000%10; //千位
e = i/10000%10;//万位
f = i/100000%10;//十万位
g = i/1000000%10;//百万位
//printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n",a,b,c,d,e,f,g);
//break;
temp=d*1000000+d*100000+d*10000+d*1000+d*100+d*10+d*1;
//printf("%d\n",temp);
//break;
a=0+a*1;
b=a+b*10;
c=b+c*100;
d=c+d*1000;
e=d+e*10000;
f=e+f*100000;
g=f+g*1000000; //也可以直接g=i;
//printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\n",a,b,c,d,e,f,g);
//break;
sum=a+b+c+d+e+f+g;
if(sum==temp)
{
printf("%d\n",i);
break;
}
}
return 0;
}
后来突然发现不仅可以一位一位的去,而且可以多位多位的取出比如取出最后2位是n%100,取出最后3位n%1000:
推荐这种方式:
#include<stdio.h>
int main()
{
int sum;
int i;
int temp,t;
int a,b,c,d,e,f,g;//代表每一位上的数字
for(i=9992299;i>=1000000;i--)
{
a=i%10;//取出各位
b=i%100;//取出后2位
c=i%1000; //取出后3位
d=i%10000;//后4位
e=i%100000;//后5位
f=i%1000000;//后6位
g=i%10000000;//取出后7位
t=i/1000%10;//取出千位上的数字 (这里可以理解为最中间的那个数字)
temp=t*1000000+t*100000+t*10000+t*1000+t*100+t*10+t*1;
sum=a+b+c+d+e+f+g;
if(sum==temp)
{
printf("%d\n",i);
break;
}
}
return 0;
}//2072836
如果以后叫我们这样做:
让
让我
让我怎
。。
让我怎样过大年的话,就是取出前1位n/1000000,前2位n/100000....
#include<stdio.h>
int main()
{
int sum;
int i;
int temp,t;
int a,b,c,d,e,f,g;//代表每一位上的数字
for(i=9992299;i>=1000000;i--)
{
a=i/1000000;//最高位
b=i/100000;//高2位
c=i/10000;//高3位
d=i/1000;//高4位
e=i/100;//高5位
f=i/10;//高6位
g=i/1;//全部
t=i/1000%10;//取出千位上的数字 (这里可以理解为最中间的那个数字)
temp=t*1000000+t*100000+t*10000+t*1000+t*100+t*10+t*1;
sum=a+b+c+d+e+f+g;
if(sum==temp)
{
printf("%d\n",i);
break;
}
}
return 0;
}
但上面这个程序是没有解的