一道人工无法求解的数学题的计算机求解

23 篇文章 0 订阅
14 篇文章 0 订阅

    本程序采用 习语言 - 中英文C语言双语编译器 编译运行通过。  习语言 - 中文编程的好选择,C语言学习C程序编译的好工具。 

 

     今天习语言Q群里,幻象群友提出一个数学题,原起是一个智力题,原题是这样的:真假金币-有十袋金币,每一枚金币重10G。其中有一袋金币是假金币,每枚重量仅9G。有一把电子秤,怎样称一次就知道哪袋金币是假的?这个数学题的提出是幻想的一个解法,这个解法是不是最佳大家另讨论。

现在贴出这个数学题:

M,N,X,Y均为正整数,M取值范围为1-1000,X的可能取值为101 103 107 109 113 127 131 137 139 149 
  对于任意给定的整数M和N,验证方程1216M+XY=10N,未知数Y是否有可能存在两个解或多个解。


以下是习语言代码:

习语言独有支持的文章风格代码,看是文章,亦是代码,可编译运行。  习语言各大下载网站可下,欢迎下载尝试。


数学题:
  M,N,X,Y均为正整数,M取值范围为1-1000,X的可能取值为101 103 107 109 113 127 131 137 139 149 
  对于任意给定的整数M和N,验证方程1216M+XY=10N,未知数Y是否有可能存在两个解或多个解。


解题分析:
M,N手工赋值的话很辛苦,最好是电脑自动赋值尝试。
M: 1-1000
X: 101 103 107 109 113 127 131 137 139 149
N: 小N - 大N   : 小N,大N 可宏定义,也可以命令行输入
求Y


方程式  1216M+XY=10N
等效: XY = 10N - 1216M
条件: 10N -1216M > 0   即 10N > 1216M
     同时 (10N -1216M) % X == 0  
     Y = (10N -1216M) / X
这里M,N确定后,X确定,Y就确定,要么存在解,要么不存在解。
X有10个可选项,就看这里面 Y存在解的情况是否大于1     





#包含 “习语言系统.接口”
#定义   小M  1
#定义   大M  1000
自然数  X值[] = {101,103,107,109,113,127,131,137,139,149};
#定义   X值个数  ( 类型长度(X值)/ 类型长度(自然数))
自然数  X值标志[] = {101,103,107,109,113,127,131,137,139,149};
自然数  Y值[] = {101,103,107,109,113,127,131,137,139,149};


整数类型 主函数()
{
  //==用户代码开始
自然数 M,N,X,大N=10000,小N=1000;   
整数类型  X位置,Y值计数=0,MN组合计数=0;
汉字类型  用户选择=0;

格式输出(“X共有%整个可选值,取值范围为101 103 107 109 113 127 131 137 139 149 %行”,X值个数 );
格式输出(“M取值范围为%整-%整,N取值范围为1000-10000,是否需要修改N值范围?(是/否)”,小M,大M);
用户选择 = 【汉字类型】  输入字(【无参数】);
如果(用户选择 等于 ‘是’){
输出字符串(“输入最小N值:”); 小N=【整数类型】  输入整数(【无参数】);
输出字符串(“输入最大N值:”); 大N=【整数类型】  输入整数(【无参数】);
}
格式输出(“M取值范围为%整-%整,N取值范围为%整-%整, %行”,小M,大M ,小N,大N );
格式输出(“解题进行中...,请等待.. %行” );

步进循环(M=小M;M ≤ 大M;M++)
步进循环(N=小N;N ≤ 大N;N++)
{
如果( 10*N  ≤ 1216*M) 继续;
Y值计数 = 0;
步进循环(X位置 = 0;X位置 < X值个数;X位置 加加 )
X值标志[X位置]=0;
步进循环(X位置 = 0;X位置 < X值个数;X位置 加加 )
{
X = X值[X位置];
如果((10*N -1216*M) % X  ≠  0 )  继续;
Y值[X位置] = (10*N -1216*M) / X ;
X值标志[X位置]=1;
Y值计数 ++;
}
如果(Y值计数 大于 1 ){
MN组合计数 ++;
格式输出(“  【%整】 M=%整,N=%整时存在X,Y存在%整个解。 %行”,MN组合计数,M,N,Y值计数 );
步进循环(X位置 = 0;X位置 < X值个数;X位置 加加 )
如果(X值标志[X位置])
格式输出(“    --- X=%整,Y=%整。 %行”,X值[X位置],Y值[X位置] );
  如果(MN组合计数 %20 == 0)暂停();
}
}
格式输出(“在制定M,N取值区间内,存在%整种MN组合,使得X可取指定几个值时,XY存两个或多个可选组合。 %行”, MN组合计数 );
  //==用户代码结束
  暂停();
  返回 0;
}   


 

更多习语言系列作品介绍:

       1、习丽妞 (linux环境下的中英文c语言)双语编程工具。  

       2、习语言编辑器: 一个支持中英文关键词高亮的文本编辑器。
       3、中汇:中文汇编器
       4、构建:中文构建工具(中文make工具)
       5、习51-中文C51嵌入式开发伴侣
       6、习佳佳-中文C++应用开发伴侣
       7、习佳娃-中文JAVA开发伴侣
       。。。。。。

欢迎爱好者试用,交流。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值