搜索
查看: 978|回复: 5
打印 上一主题 下一主题

小学三年级的题

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-10 13:59:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
绿化靠大家乘以靠等于家家家家家家。“绿化靠大家”“靠”“家家家家家家”分别代表一个数字,相同的字代表相同的数。编一个程序解,求代码

最佳答案

查看完整内容

2楼的程序看上去没问题,可惜出题人有点…… 首先注意到末位的 e * c % 10 == e 这个可以手动穷举出所有可能性,写程序也很简单(不过既然是小学数学题应该是让手动穷举的) 我们首先来假设不同的汉字代表不同的数字(一般的题目都有这种限制),注意到在这个假设下,c不能是1,否则得不到一个6位数; 然后e不能是0,否则c=e=0 这里写程序就是 这样子剩下的数字对只有 e c 2 6 4 6 5 3 5 7 5 9 8 6 那么就 ...
沙发
发表于 2014-2-10 13:59:18 | 只看该作者
本帖最后由 rosynirvana 于 2014-2-14 01:32 编辑

2楼的程序看上去没问题,可惜出题人有点……

首先注意到末位的
e * c % 10 == e
这个可以手动穷举出所有可能性,写程序也很简单(不过既然是小学数学题应该是让手动穷举的)

我们首先来假设不同的汉字代表不同的数字(一般的题目都有这种限制),注意到在这个假设下,c不能是1,否则得不到一个6位数;
然后e不能是0,否则c=e=0

这里写程序就是
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.         int a,b,c,d,e;
  6.     for(a=0;a<10;a++)
  7.         for(b=0;b<10;b++)
  8.             if(a * b % 10 == a && a != b && b != 1 && a != 0)
  9.                 printf("%d %d\n", a, b);
  10.     system("pause");
  11.     return 0;
  12. }
复制代码

这样子剩下的数字对只有
e c
2 6
4 6
5 3
5 7
5 9
8 6

那么就可以根据111111*e的值和c的值反推出所有数字了
得到的结果是
37037
74074
185185
79365
61728+(1/3)
148148
第5组不是整数,2和6大于10万,第1组有重复数字,第3组看上去似乎是正确的但是c的值冲突了

所以建立在这个假设下面是无解的
如果假设可以有重复的数字,那这个问题就没意思了,a=b=c=d=e=0显然是符合的,小学数学不会问什么非平凡解吧=,=
板凳
发表于 2014-2-10 20:24:58 | 只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <windows.h>
  5. int main()
  6. {
  7.         int a,b,c,d,e;
  8.     for(a=0;a<10;a++)
  9.         for(b=0;b<10;b++)
  10.             for(c=0;c<10;c++)
  11.                 for(d=0;d<10;d++)
  12.                     for(e=0;e<10;e++)
  13.                     {
  14.                                                 if((a*10000+b*1000+c*100+d*10+e)*c==e*111111)
  15.                                                         if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e)
  16.                             {
  17.                                                                 printf("%d%d%d%d%d\n",a,b,c,d,e);
  18.                                 printf("*\n");
  19.                                 printf("-----\n");
  20.                                 printf("%d%d%d%d%d%d\n",e,e,e,e,e,e);
  21.                             }
  22.                     }
  23.     system("pause");
  24.     return 0;
  25. }
  26. 好的回复是对人的鼓励。
复制代码
地板
发表于 2014-2-13 14:10:17 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
int main()
{
        int a,b,c;
    a=//绿化靠大家//;
        b=//靠//;
    c=//家家家家家家//;
    printf("%d*%d=%d",a,b,c);
   
        system("pause");
        return 0;
}
5#
 楼主| 发表于 2014-2-13 22:50:17 | 只看该作者
都解不出来
6#
发表于 2014-5-27 08:27:20 | 只看该作者
baibian11 发表于 2014-2-13 14:10
#include
#include
int main()

你是来搞笑的吧,或者说你的程序都没自己跑过?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表