• 2015年蓝桥杯省赛B组第3题--三羊献瑞




    三羊献瑞


    观察下面的加法算式:


          祥 瑞 生 辉
      +   三 羊 献 瑞
    -------------------
       三 羊 生 瑞 气


    (如果有对齐问题,可以参看【图1.jpg】)


    其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。


    请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<math.h>
    
    int a[10],b[10],c[10];
    void aa(int n)
    {
    	int i=0;
    	while(n>0){
    		a[i++]=n%10;
    		n/=10;
    	}
    }
    void bb(int n)
    {
    	int i=0;
    	while(n>0){
    		b[i++]=n%10;
    		n/=10;
    	}
    }
    int cc(int n)
    {
    	int i=0;
    	while(n>0){
    		c[i++]=n%10;
    		n/=10;
    	}
    	if(i!=5)
    		return 0;
    	else 
    		return 1;
    }
    int a1()
    {
    	int i,j;
    	for(i=0;i<4;i++){
    		for(j=0;j<5;j++){
    			if(i!=j&&j<4&&a[i]==a[j])
    				return 0;
    			if(i!=2||j!=0){
    				if(j<4&&a[i]==b[j])
    					return 0;
    			}
    			if(i==0||i==3){
    				if(j!=1&&j!=2){
    					if(a[i]==c[j])
    						return 0;
    				}
    			}
    		}
    	}
    	return 1;
    }
    int bb()
    {
    	int i,j;
    	for(i=0;i<4;i++){
    		for(j=0;j<5;j++){
    			if(j>i&&j<4&&b[i]==b[j])
    				return 0;
    			if(i==1&&b[i]==c[j])
    				return 0;
    		}
    	}
    	return 1;
    }
    int c1()
    {
    	int i,j;
    	for(i=0;i<5;i++){
    		for(j=i+1;j<5;j++){
    			if(c[i]==c[j])
    				return 0;
    		}
    	}
    }
    int main ()
    {
    	int i,j;
    	for(i=1000;i<=9999;i++){
    		for(j=1000;j<=9999;j++){
    			memset(c,0,sizeof(c));
    			
    			if(cc(i+j)){
    				memset(a,0,sizeof(a));
    				memset(b,0,sizeof(b));
    				aa(i);
    				bb(j);	
    				if(b[3]==c[4]&&b[2]==c[3]&&a[1]==c[2]&&a[2]==c[1]&&b[0]==a[2]&&a1()&&bb()&&c1()){
    					printf(" %d
    ",i);
    					printf("+%d
    ",j);
    					printf("-----------
    ");
    					printf("%d
    
    ",i+j);
    					
    				}
    			}else{
    				
    			}
    			
    		}
    	}
    	return 0;
    }

    最后答案为:1085

    代码运行结果如下:


  • 相关阅读:
    hrbust 1788
    poj2299 ( bit )
    LA3027(并查集)
    hdu1166 (bit)
    hdu1598(并查集)
    cdoj1215 (并查集)
    hdu2643 ( 第二类斯特灵数 )
    hdu3625 ( 第一类斯特灵数 )
    Uva10066
    怎么处理sqlserver2017部署在winowsDocker上时区无法修改成功的方式,并且可以多创建新的容器调用简单的方式直接使用!
  • 原文地址:https://www.cnblogs.com/lanaiwanqi/p/10445765.html
Copyright © 2020-2023  润新知