免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3259 | 回复: 10
打印 上一主题 下一主题

[C++] 超级无聊,用最死笨的方法,解:号称博士都放弃的三年级数学题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-22 15:18 |只看该作者 |倒序浏览
在驱动之家看到<敢试吗?这道三年级数学题 博士都放弃了>
在网易看到<越南小学三年级一道数学题难倒教师与博士>

用最死笨的方法,解
  1. #include "stdafx.h"
  2. #include<iostream>
  3. #include <vector>
  4. using namespace std;
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7.         int a0 = 0;        int a1 = 0;
  8.         int a2 = 0;        int a3 = 0;
  9.         int a4 = 0;        int a5 = 0;
  10.         int a6 = 0;        int a7 = 0;
  11.         int a8 = 0;        int a9 = 0;
  12.         int count = 0;
  13.        
  14.         for (a0 = 1; a0 < 10;a0++)
  15.         {
  16.                 for (a1 = 1; a1 < 10; a1++)
  17.                 {
  18.                         for (a2 = 1; a2 < 10; a2++)
  19.                         {
  20.                                 if ((a1%a2)!=0) continue;
  21.                                 if ((13 * a1) % a2 != 0) continue;
  22.                                 for (a3 = 1; a3 < 10; a3++)
  23.                                 {
  24.                                         for (a4 = 1; a4 < 10; a4++)
  25.                                         {
  26.                                                 for (a5 = 1; a5 < 10; a5++)
  27.                                                 {
  28.                                                         for (a6 = 1; a6 < 10; a6++)
  29.                                                         {
  30.                                                                 for (a7 = 1; a7 < 10; a7++)
  31.                                                                 {
  32.                                                                         for (a8 = 1; a8 < 10; a8++)
  33.                                                                         {
  34.                                                                                 if ((a1%a2) != 0) continue;
  35.                                                                                 if (((a6*a7) % a8) != 0 ) continue;
  36.                                                                                 if (
  37.                                                                                         (a0 + 13 * a1 / a2 + a3 + 12 * a4 - a5 - 11 + a6*a7 / a8) -10== 66
  38.                                                                                         && (a0 != a1)
  39.                                                                                         && (a0 != a2)
  40.                                                                                         && (a0 != a3)
  41.                                                                                         && (a0 != a4)
  42.                                                                                         && (a0 != a5)
  43.                                                                                         && (a0 != a6)
  44.                                                                                         && (a0 != a7)
  45.                                                                                         && (a0 != a8)

  46.                                                                                         && (a1 != a2)
  47.                                                                                         && (a1 != a3)
  48.                                                                                         && (a1 != a4)
  49.                                                                                         && (a1 != a5)
  50.                                                                                         && (a1 != a6)
  51.                                                                                         && (a1 != a7)
  52.                                                                                         && (a1 != a8)

  53.                                                                                         && (a2 != a3)
  54.                                                                                         && (a2 != a4)
  55.                                                                                         && (a2 != a5)
  56.                                                                                         && (a2 != a6)
  57.                                                                                         && (a2 != a7)
  58.                                                                                         && (a2 != a8)

  59.                                                                                         && (a3 != a4)
  60.                                                                                         && (a3 != a5)
  61.                                                                                         && (a3 != a6)
  62.                                                                                         && (a3 != a7)
  63.                                                                                         && (a3 != a8)

  64.                                                                                        
  65.                                                                                         && (a4 != a5)
  66.                                                                                         && (a4 != a6)
  67.                                                                                         && (a4 != a7)
  68.                                                                                         && (a4 != a8)

  69.                                                                                         && (a5 != a6)
  70.                                                                                         && (a5 != a7)
  71.                                                                                         && (a5 != a8)

  72.                                                                                        
  73.                                                                                         && (a6 != a7)
  74.                                                                                         && (a6 != a8)
  75.                                                                                         && (a7 != a8)
  76.                                                                                         )
  77.                                                                                         cout << a0 << "," << a1 << "," << a2 << "," << a3 << "," << a4 << "," << a5 << "," << a6 << "," << a7 << "," << a8 << endl;
  78.                                                                                 count++;
  79.                                                                         }
  80.                                                                 }
  81.                                                         }
  82.                                                 }
  83.                                         }
  84.                                 }
  85.                         }
  86.                 }
  87.         }
  88.        
  89.         cout << count;
  90.         return 0;
  91. }
复制代码
结果集:48892572组解.
好球无聊.

论坛徽章:
71
子鼠
日期:2015-06-10 14:07:09丑牛
日期:2015-06-10 14:07:10寅虎
日期:2015-06-10 14:07:40卯兔
日期:2015-06-10 14:07:44辰龙
日期:2015-06-10 14:07:44巳蛇
日期:2015-06-10 14:07:46午马
日期:2015-06-10 14:07:47未羊
日期:2015-06-10 14:07:48申猴
日期:2015-06-10 14:07:50酉鸡
日期:2015-06-10 14:07:54戌狗
日期:2015-06-10 14:07:55亥猪
日期:2015-06-10 14:07:57
2 [报告]
发表于 2015-05-22 15:29 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2015-05-22 15:54 |只看该作者
题目是:a+13*b/c+d+12*e-f-11+g*h/i-10 = 66,其中abcdefg皆大于等于0小于等于9。
例如 1+13*1/1+1+12*1-3-11+7*9/1-10 = 66 就是其中的一个解。

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
4 [报告]
发表于 2015-05-22 16:13 |只看该作者
噗 哗众取宠 这种题的确有点难度
但 只不过是一个简单的全排列罢了
随随便便一个本科生就能解决
还博士 .....

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
5 [报告]
发表于 2015-05-22 16:18 |只看该作者
输出
无分数的集合数目 = 351020
具分数的集合数目 = 453542
和楼主的数值不一样呀
  1. #include <stdio.h>

  2. int main( void )
  3. {
  4.     unsigned n = 0;
  5.     unsigned m = 0;

  6.     for( int a=1; a!=10; ++a )
  7.     for( int b=1; b!=10; ++b )
  8.     for( int c=1; c!=10; ++c )
  9.     for( int d=1; d!=10; ++d )
  10.     for( int e=1; e!=10; ++e )
  11.     for( int f=1; f!=10; ++f )
  12.     for( int g=1; g!=10; ++g )
  13.     for( int h=1; h!=10; ++h )
  14.     for( int i=1; i!=10; ++i )
  15.     {
  16.         if( 13*b%c==0 && g*h%i==0 && a+13*b/c+d+12*e-f-11+g*h/i-10==66 )
  17.             ++n;

  18.         if( (13*b*i+g*h*c)%(c*i)==0 && (13*b*i+g*h*c)/(c*i)+a+d+12*e-f-11-10==66 )
  19.             ++m;
  20.     }

  21.     printf( "无分数的集合数目 = %u\n", n );
  22.     printf( "具分数的集合数目 = %u\n", m );

  23.     return 0;
  24. }
复制代码

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
6 [报告]
发表于 2015-05-22 16:58 |只看该作者
好球                           

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2015-05-23 09:09 |只看该作者
。。。。。。
出题人是怎么解的

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
8 [报告]
发表于 2015-05-25 08:38 |只看该作者
cjaizss 发表于 2015-05-23 09:09
。。。。。。
出题人是怎么解的


我也很想知道这个题的最规范、最高大上、最有效率的解法是什么?

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
9 [报告]
发表于 2015-05-25 09:21 |只看该作者
回复 7# cjaizss
回复 8# fender0107401

对于 a+13*b/c+d+12*e-f-11+g*h/i-10 = 66
只需要一个解就行了,所以设 c=1, h=1, i=1 得
a+13*b+d+12*e-f+g = 87
a、b、d、e、f、g 的平均值大约为 87/(1+13+1+12-1+1)=3
那么设 b=3, e=3 得
a+d-f+g = 12
随便给个解 a=6, d=6, f=1, g=1

验证 a=6, b=3, c=1, d=6, e=3, f=1, g=1, h=1, i=1 对不对?
6+13*3/1+6+12*3-1-11+1*1/1-10=66

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
10 [报告]
发表于 2015-05-25 10:47 |只看该作者
难度的确是一道小学数学题而已, 博士如果做不出来就有点搞笑了吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP