1252 :[蓝桥杯2015初赛]奇妙的数字 C/C++
生活随笔
收集整理的這篇文章主要介紹了
1252 :[蓝桥杯2015初赛]奇妙的数字 C/C++
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:
小明發現了一個奇妙的數字。它的平方和立方正好把0~9的10個數字每個用且只用了一次。你能猜出這個數字是多少嗎?
輸出格式:
請輸出該數字,不要輸出任何多余的內容。
分析:
首先縮小這個數的范圍。
一位數最大的是9,9*9=81,9*9*9=729,位數為5,不符合。
兩位數最大的是99,99*99=9801,99*99=970299,位數是符合的。
三位數最小的是100,100*100=10000,100*100*100=1000000,位數超過10,不符合。
因此這個數必然是一個兩位數,不難發現10~46的平方和立方加起來不夠10個數字,從47開始剛好由十位數字組成,所以我們最終將這個數字的范圍縮小到47~99。
- 注意:本題涉及到排序,使用c++中的sort函數會比c方便很多。
我的題解:
#include <iostream> #include <algorithm> using namespace std; int main() {int a,b,A[10],B[6],i,j,k,l,flag = 1;int C[10] = {0,1,2,3,4,5,6,7,8,9};for(i = 47;i < 99;i++){a = i*i;b = i*i*i;j = 0;//記錄A數組元素個數 while(a)//將平方數存入數組 {A[j++] = a%10;a/=10;}k = 0;//記錄B數組元素個數 while(b)//將立方數存入數組 {B[k++] = b%10;b/=10;}for(l = 0;l < k;l++)//合并兩個數組 {A[l+j] = B[l]; } sort(A,A+10);//排序 flag = 1;for(l = 0;l < 10;l++){ if(A[l] != C[l]) flag = 0;}if(flag == 1)break;}cout << i << endl;return 0; }總結
以上是生活随笔為你收集整理的1252 :[蓝桥杯2015初赛]奇妙的数字 C/C++的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux动态鼠标光标,自定义鼠标光标-
- 下一篇: Java开发QQ机器人