当前位置:
首页 >
1252: [蓝桥杯2015初赛]奇妙的数字
发布时间:2024/8/1
53
豆豆
生活随笔
收集整理的这篇文章主要介绍了
1252: [蓝桥杯2015初赛]奇妙的数字
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目叙述:
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
输出格式:
请输出该数字,不要输出任何多余的内容。
思路:
我么来判断一下当前数q它是一个几位数呢,
当q为1位数的时候,q*q最大才是81,q*q*q最大时三位数,不满足条件
当q为3位数的时候,q*q最小为10000,q*q*q*为1000000,此时k=100不满足条件
所以q是一个2位数:
当q=31时,q*q = 961,是三位数,q*q*q=29791,不满足条件
当q= 32时,q*q = 1024,所以我们从q=32开始遍历,一直到99.
代码:
#include<stdio.h> #include<string.h> int main() {int i,len,j,q,flag;char a[100],b[100],c[10]={'0','1','2','3','4','5','6','7','8','9'};for(q=32;q<99;q++){sprintf(a,"%d",q*q);//这里sprintf是将q*q的数转化成字符数组例如123变成‘1’,‘2’,‘3’sprintf(b,"%d",q*q*q);//同理strcat(a,b);//将两个数组链接一块,合并数组len=strlen(a);//求数组长度if(len=10)//由题意得,需满足0-9十个字符{for(i=0;i<10;i++){flag=0;for(j=0;j<10;j++){if(c[i]==a[j])//判断十个字符是否为0-9{flag=1;}}if(flag==0)//有一个不一样就退出循环,该q不成立break;}if(flag==1)//如果还是1则说明成立break;}}printf("%d\n",q);return 0; }这里是用字符写的,其实也可以不用sprintf,直接将q*q的数逐渐%10存入数组,用整形数组一样的道理!
总结
以上是生活随笔为你收集整理的1252: [蓝桥杯2015初赛]奇妙的数字的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Extjs EditorGridPane
- 下一篇: 计算机毕业论文基于springboot的