华师一附中OI组

标题: 整数问题 [打印本页]

作者: /wjr/    时间: 2014-10-29 15:19
标题: 整数问题
对于以下的每一题,不同的字母代表不同的值,相同的字母代表相同的值,写代码跑出结果。。。1.AHHAAH/JOKE=HA
2.ONE+ONE=TWO
PS:ONE中的O和TWO中的O一样,但和JOKE的O不一样
目前只有两个。。。先做再说。。。。

作者: admin    时间: 2014-11-1 17:30
楼上标准算法,很好!
作者: /wjr/    时间: 2014-11-4 21:39
1.
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int h,a,joke;bool b[10];
  5. int main()
  6. {
  7.         for(h=1;h<=9;h++)
  8.         {
  9.                 b[h]=1;
  10.                 for(a=0;a<=9;a++)
  11.                 if(!b[a])
  12.                 {
  13.                         b[a]=1;
  14.                         long ahhaah=11001*h+100110*a,ha=10*h+a;
  15.                         if(ahhaah/ha*ha==ahhaah)
  16.                         {
  17.                                 joke=ahhaah/ha;
  18.                                 while(joke)
  19.                                 {
  20.                                         int p=joke%10;joke/=10;
  21.                                         if(b[p])break;
  22.                                 }
  23.                                 if(joke)continue;
  24.                                 else cout<<ahhaah<<"/"<<ha<<"="<<ahhaah/ha;
  25.                         }
  26.                         b[a]=0;
  27.                 }
  28.                 b[h]=0;
  29.         }
  30.         return 0;
  31. }
复制代码

2.
  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int one,two;bool b[10];
  5. void print()
  6. {
  7.         cout<<one<<"+"<<one<<"="<<two<<endl;
  8. }
  9. int main()
  10. {
  11.         cout<<"ONE+ONE=TWO"<<endl;
  12.         for(int oneo=2;oneo<=4;oneo+=2)
  13.         {
  14.                 b[oneo]=1;
  15.                 for(int onen=0;onen<=9;onen++)
  16.                 if(!b[onen])
  17.                 {
  18.                         b[onen]=1;
  19.                         for(int onee=1;onee<=7;onee++)
  20.                         if(!b[onee])
  21.                         {
  22.                                 b[onee]=1;
  23.                                 one=100*oneo+10*onen+onee;
  24.                                 two=2*one;
  25.                                 int twoo=two%10,twow=(two/10)%10,twot=two/100;
  26.                                 if(twoo==oneo&&!b[twow]&&!b[twot]&&twow!=twot)print();
  27.                                 b[onee]=0;
  28.                         }
  29.                         b[onen]=0;
  30.                 }
  31.                 b[oneo]=0;
  32.         }
  33.         return 0;
  34. }
复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2