网站大量收购独家精品文档,联系QQ:2885784924

《很好的编程练习题目含C++、java版答案》.docx

《很好的编程练习题目含C++、java版答案》.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《很好的编程练习题目含C++、java版答案》.docx

蓝桥杯试题 编译环境:dev c++、NetBeans IDE 7.1.2 1.古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的数字写出来。 #includeiostream #define max 100000 using namespace std; int judge(int n,int m){ int num[5],i,j,p=n; i=0; while(p) { num[i++]=p%10;//num[0] to num[4] are ABCDE p/=10; }//until p=0 for(i=0;i4;i++) for(j=i+1;j5;++j) if(num[i]==num[j]) return 0;//get five different number p=n*m;// ABCDE * ? if(p/max) return 0;//if ABCDE * ?100000 then not equals EDCBA i=4; while(p) { if(p%10!=num[i--])return 0;// ABCDE * ?=EDCBA p/=10; } return 1; } int main() { int i,j; for(i=10000;imax;++i)//five different number from (10000,100000), for(j=2;j10;j++)//? from[2,9] if(judge(i,j)) coutiendl; getchar();getchar(); return 0; } 巧妙之处在如何获取五个互不相同的数字。思路:用五位数的每一位分别代表ABCDE,这样查找范围就是(10000,100000),同样要满足ABCDE*?=EDCBA,ABCDE*?的范围同样是(10000,100000)。而?代表的数字不可能是1,范围是[2,10)。1、定义一个长度为五的数组nums,mums[0]代表E,nums[4]代表A,从(10000,100000)中取一个数字,先把这个五位数的每一位上的值赋给这个数组;2、检验这个数组中的数字是否满足两两互不相同,若满足则继续第三步,若不满足则跳回第一步;3、从[2,10)中取一个数字跟满足条件的五位数相乘,检验ABCDE*?是否超过100000,如果超过则再在[2,10)中找下一个数字检验,如果不超过则继续下一步;4、判断ABCDE*?=EDCBA,如果相等则找到符合条件的等式,若不相等则调回第一步。 Java版 public class ABCDE_to_EDCBA { public static final int Max=100000; public static boolean judge(int m,int n)//m代表每位上数字都不相同的五位数,n代表? { int []nums = new int[5]; int i = 0; int p = m; while(p!=0) { nums[i++] = p%10; p/=10; } for(int x = 0 ;x4;x++)//获得此五位数即ABCDE for(int y = x+1;y5;y++) if(nums[x]==nums[y]) return false; p = m*n; if(p/Max!=0)//ABCDE*?不能超过五位数 return false; //判断ABCDE*?=EDCBA int k = 4; while(k!=0) { if(nums[k]!=p%10)

文档评论(0)

mwap + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档