蓝桥杯第六届C+三羊献瑞+简单推理

描述

观察下面的加法算式:
在这里插入图片描述
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

思路

设此公式为a+b=c,观察此公式得,a肯定是一个9000以上的四位数,而肯定在1000到2000之间,a和b重复数字只有1个,总共使用到的只有七个数字,所以可以用一个标记数组进行判断。
答案:1085

代码
#include<cstdio>
using namespace std;
int main()
{
	int a,b,c,d,A,B,C,D;
	for(int i=9000;i<10000;i++)
	{
		for(int j=1000;j<2000;j++)
		{
			int flag[10]={0},cnt=0;
			a=i%10,b=i/10%10,c=i/100%10,d=i/1000;
			flag[a]=1,flag[b]=1,flag[c]=1,flag[d]=1;
			A=j%10,B=j/10%10,C=j/100%10,D=j/1000;
			flag[A]=1,flag[B]=1,flag[C]=1,flag[D]=1;
			for(int k=0;k<10;k++)	if(flag[k])	cnt++;
			for(int g=0;g<10;g++)
			{
				if(A==c && cnt==7)
				{
					int ans=g+A*10+b*100+C*1000+D*10000;
					if(ans==i+j && flag[g]==0)
					{
						//printf("a=%d  b=%d  c=%d",i,j,ans);
						printf("%d",j);
						return 0;
					}
				}
					
			}
		}
	}
	return 0;
}
发布了39 篇原创文章 · 获赞 1 · 访问量 556

猜你喜欢

转载自blog.csdn.net/qq_45249273/article/details/104572364