第六届蓝桥杯C/C++A组第三题解答

来源:互联网 发布:sm2246xt开卡软件 编辑:程序博客网 时间:2024/05/16 16:03

题目:

小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。 你能猜出这个数字是多少吗?


思路:

主要思想是暴力循环,就把这个数从-999到999试,如果没有,就扩大范围。

这到题的主要难度在于判断“它的平方和立方正好把0~9的10个数字每个用且只用了一次”这句话上,就这句话理解而言,我们要算出其平方和立方,并且要得到平方和立方每一位的数字,如果把每一位的数字存储到一个数组里并且将数组排序,然后再从数组第0位开始到第9位逐一检查是否满足条件,那么久可以实现目的。


<span style="font-size:18px;">#include<iostream>#include<algorithm>using namespace std;int main(){int i=0,square=0,cube=0,n=0,flag=0;for(i=0;i<=999;i++){int a[50]={0},m=0;   //这里要注意重新初始化。square=i*i;cube=i*i*i;for(;square!=0;)//得到平方每一位的数字{a[m]=square%10;m++;square=square/10;}for(;cube!=0;)//得到立方每一位的数字{a[m]=cube%10;m++;cube=cube/10;}sort(a,a+m);  //排序函数for(n=0;n<=9;n++)//逐一比较{if(a[n]==n){flag=1;//flag为此题的判断标志}else{flag=0;break;}}if(flag==1&&m==10)//如果flag为1,代表数组0~9位满足题目所讲{cout<<i<<endl;}}return 0;}</span>


注意:

见程序。


心路历程:

水题,但是很考验细节
 


0 0
原创粉丝点击