1252: [蓝桥杯2015初赛]奇妙的数字
生活随笔
收集整理的這篇文章主要介紹了
1252: [蓝桥杯2015初赛]奇妙的数字
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目敘述:
?小明發(fā)現(xiàn)了一個(gè)奇妙的數(shù)字。它的平方和立方正好把0~9的10個(gè)數(shù)字每個(gè)用且只用了一次。你能猜出這個(gè)數(shù)字是多少嗎?
輸出格式:
?請(qǐng)輸出該數(shù)字,不要輸出任何多余的內(nèi)容。
思路:
我么來判斷一下當(dāng)前數(shù)q它是一個(gè)幾位數(shù)呢,
當(dāng)q為1位數(shù)的時(shí)候,q*q最大才是81,q*q*q最大時(shí)三位數(shù),不滿足條件
當(dāng)q為3位數(shù)的時(shí)候,q*q最小為10000,q*q*q*為1000000,此時(shí)k=100不滿足條件
所以q是一個(gè)2位數(shù):
當(dāng)q=31時(shí),q*q?= 961,是三位數(shù),q*q*q=29791,不滿足條件
當(dāng)q= 32時(shí),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的數(shù)轉(zhuǎn)化成字符數(shù)組例如123變成‘1’,‘2’,‘3’sprintf(b,"%d",q*q*q);//同理strcat(a,b);//將兩個(gè)數(shù)組鏈接一塊,合并數(shù)組len=strlen(a);//求數(shù)組長(zhǎng)度if(len=10)//由題意得,需滿足0-9十個(gè)字符{for(i=0;i<10;i++){flag=0;for(j=0;j<10;j++){if(c[i]==a[j])//判斷十個(gè)字符是否為0-9{flag=1;}}if(flag==0)//有一個(gè)不一樣就退出循環(huán),該q不成立break;}if(flag==1)//如果還是1則說明成立break;}}printf("%d\n",q);return 0; }這里是用字符寫的,其實(shí)也可以不用sprintf,直接將q*q的數(shù)逐漸%10存入數(shù)組,用整形數(shù)組一樣的道理!
?
總結(jié)
以上是生活随笔為你收集整理的1252: [蓝桥杯2015初赛]奇妙的数字的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Extjs EditorGridPane
- 下一篇: linux中vi后如何退出命令,linu