题目描述
题目:
张宁去ACM比赛,迟到了,就看到门上写着一个奇怪的算式:
ZNASG * ? = GSANZ
他对同样迟到的聪神说:“ZNASG应该代表不同的数字,问号也代表某个数字!只有算出来了才能进去考试!”
聪神:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ZNASG 所代表的数字写出来。
输入
没有!
输出
输出ZNASG代表的数字。
每个数字后面加一个空格
#include<stdio.h>
#include<string.h>
int main(){
int a[6],k,res,r,i,b[6],j;
for(a[1]=1;a[1]<=4;a[1]++){
for(a[2]=0;a[2]<=9;a[2]++){
if(a[2]==a[1]) continue;//如果与之前的数有相等的就跳过不取
for(a[3]=0;a[3]<=9;a[3]++){
if(a[3]==a[1]||a[3]==a[2]) continue;
for(a[4]=0;a[4]<=9;a[4]++){
if(a[4]==a[1]||a[4]==a[2]||a[4]==a[3]) continue;
for(a[5]=1;a[5]<=9;a[5]++){
if(a[5]==a[1]||a[5]==a[2]||a[5]==a[3]||a[5]==a[4]) continue;
for(k=2;k<=9;k++){
j=1;r=0;
for(i=5;i>=1;i--){
b[j++]=(a[i]*k+r)%10;//b[]记录 ZNASG*?后的结果,倒着记录
r=(a[i]*k+r)/10;
}
/*开始写的这个,错了好久
b[j++]=(a[i]+r)*%10;
r=(a[i]+r)*k/10;
*/
//判断两数是否相等
if((a[1]==b[1])&&(a[2]==b[2])&&(a[3]==b[3])&&(a[4]==b[4])&&(a[5]==b[5])&&(r==0)){
printf("%d %d %d %d %d",a[1],a[2],a[3],a[4],a[5]);
break;
}
}
}
}
}
}
}
return 0;
}