如下的加法算式:其中每个汉字代表一个数字,填写“让我怎能过大年” 所代表的整数。

本文详细解析了一个包含多个汉字代表数字的加法算式,并通过编程方式寻找答案。从简单的理解到复杂的操作,逐步揭示了解题过程和背后的数学逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有如下的加法算式。其中每个汉字代表一个数字。
(如果存在对齐问题,可参见【图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;
}

但上面这个程序是没有解的



评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝地反击T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值