- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)
您可能关注的文档
- 《在 Linux 上构建一个 RADIUS 服务器》.docx
- 《在linux中搭建共享服务(samba服务器)》.doc
- 《在VMWare下安装MAC_OS_X_Snow_Leopard_10》.pdf
- 《在網頁中加入JavaScript特效》.doc
- 《在那遥远的地方-A Distant Land》.pdf
- 《均显电子LED视频处理器LEDV6SA1快速手册》.doc
- 《埃森哲 - Junior Achievement Symposium》.ppt
- 《培训中心Linux笔记》.doc
- 《基于 ST20 嵌入式系统的 Java 虚拟机研究与移植》.pdf
- 《基于51单片机的4块16_16(16_64)led显示屏》.doc
文档评论(0)