论坛首页· 友情链接申请·申请版主· 广告投放· 道具中心· 设为首页· 收藏本站
 33 1234
发新话题
打印

百道经典习题

本主题由 大道至简 于 2008-7-23 10:36 设置高亮
引用:
1. 给定等式 A B C D E 其中每个字母代表一个数字,且不同数字对应不
D F G 同字母。编程求出这些数字并且打出这个数字的
+ D F G 算术计算竖式。

───────

X Y Z D E
复制内容到剪贴板
代码:

//abcdefgxyz
/*输出格式
a b c d e
    d f g
+   d f g
-----------
x y z d e
*/
#include<iostream>
using namespace std;
struct __chars{
int a,b,c,d,e,f,g,x,y,z;
};
union __tc{
    __chars cs;
    int cas[10];
};
__tc tc;
int num1,num2,num3;
bool check(){
    //分别求出 各个字符代表的数字
    tc.cs.a=num1/10000;
    tc.cs.b=(num1/1000)%10;
    tc.cs.c=(num1/100)%10;
    tc.cs.d=(num1/10)%10;
    tc.cs.e=num1%10;
    tc.cs.f=(num2/10)%10;
    tc.cs.g=num2%10;
    tc.cs.x=num3/10000;
    tc.cs.y=(num3/1000)%10;
    tc.cs.z=(num3/100)%10;
   
    //下面是一系列判断准则,每次判断以后就检查是否正确,否则返回
   
    bool rt=true;
    //检查10个字母代表的数字有没有重复的
    for(int i=0;i<10;i++)for(int j=0;j<i;j++)if(tc.cas[i]==tc.cas[j])return false;
   
    //先是num1,num2,num3中重复的字符
    rt=rt&&(num2/100==tc.cs.d);
    if(!rt)return false;
    rt=rt&&(num3/10)%10==tc.cs.d;
    rt=rt&&num3%10==tc.cs.e;
   
    int up=0;//进位数
   
    //下面是计算验证
    rt=rt&&((tc.cs.e+tc.cs.g*2)%10==tc.cs.e);up=(tc.cs.e+tc.cs.g*2)/10;
    if(!rt)return false;
    rt=rt&&((tc.cs.d+tc.cs.f*2+up)%10==tc.cs.d);up=(tc.cs.d+tc.cs.f*2+up)/10;
    if(!rt)return false;
    rt=rt&&((tc.cs.c+tc.cs.d*2+up)%10==tc.cs.z);up=(tc.cs.c+tc.cs.d*2+up)/10;
    if(!rt)return false;
    rt=rt&&((tc.cs.b+up)%10==tc.cs.d);up=(tc.cs.b+up)/10;
    if(!rt)return false;
    rt=rt&&(tc.cs.a+up==tc.cs.x);
   
    return rt;
}
void main(){
    char crs[]="abcdefgxyz";
    for(num1=1234;num1<=98765;num1++)for(num2=12;num2<=987;num2++)for(num3=1234;num3<=98765;num3++)if(check()){
        for(int i=0;i<10;i++)cout<<crs[i]<<'='<<tc.cas[i]<<endl;
        cout<<tc.cs.a<<' '<<tc.cs.b<<' '<<tc.cs.c<<' '<<tc.cs.d<<' '<<tc.cs.e<<endl;
        cout<<"    "<<tc.cs.d<<' '<<tc.cs.f<<' '<<tc.cs.g<<endl;
        cout<<"+   "<<tc.cs.d<<' '<<tc.cs.f<<' '<<tc.cs.g<<endl;
        cout<<"-----------"<<endl;
        cout<<tc.cs.x<<' '<<tc.cs.y<<' '<<tc.cs.z<<' '<<tc.cs.d<<' '<<tc.cs.e<<endl;
    }
}
评价:感觉好差劲,运行半天没出来结果,所以结果也没法验证了 !!哪位高手帮忙提高下效率!

TOP

:001 能说说这么多中文的题目是在哪儿找到的么?谢谢

TOP

想写写程序,但是看到题目又感觉写不出来。嗨!

TOP

 33 1234
发新话题