當前位置:
首頁 >
蓝桥杯2015年第六届C/C++省赛A组第三题-奇妙的数字
發布時間:2024/8/1
46
豆豆
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯2015年第六届C/C++省赛A组第三题-奇妙的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述:
小明發現了一個奇妙的數字。它的平方和立方正好把0~9的10個數字每個用且只用了一次。 你能猜出這個數字是多少嗎? 請填寫該數字,不要填寫任何多余的內容。 答案:69題解:
由于該數的平方和立方剛好使用完0-9這10個數字,因此我們可以得出該數是個兩位數,因此我們從1到100遍歷數字找到符合題意的即可。
我們將遍歷到的數進行分解處理,將其每一個位上的數字都分解出來,再判斷是否為0-9且不重復即可。
需要注意的是在取位時,應該從個位向高位取,不然的話對于“102”的數字,102除以100后直接變成了2,十位消失了。
代碼:
#include<bits/stdc++.h> using namespace std;int main() {int hash[10] = {0};//先初始化為0,說明此時一個數都沒有for(int i=47;i<100;i++)//因為從47開始才會出現平方和立方共10個位{int temp1 = i*i;while(temp1){hash[temp1%10]++;//可以直接得到此時temp1的個位temp1/=10;//降}int temp2 = i*i*i;while(temp2){hash[temp2%10]++;temp2/=10;}int flag = 0;for(int n=0;n<10;n++){if(hash[n]==1)//驗證是不是10個數每個都只出現一次{flag++;continue;}}if(flag==10){cout<<i<<endl;break;}else{memset(hash,0,sizeof(int)*10);//歸零操作}}return 0; }代碼2:
#include<bits/stdc++.h> using namespace std; int hash[10] = {0}; bool ref(int x,int y) {memset(hash,0,sizeof(hash));while(x){hash[x%10]++;x/=10;}while(y){hash[y%10]++;y/=10;}int flag = 0;for(int i=0;i<10;i++){if(hash[i]==1){flag++;}}if(flag==10)return 1;elsereturn 0; } int main() {for(int i=1;i<100;i++){if(ref(i*i,i*i*i)){cout<<i<<endl;break;}}return 0; }總結
以上是生活随笔為你收集整理的蓝桥杯2015年第六届C/C++省赛A组第三题-奇妙的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中vi命令用法
- 下一篇: Python3爬虫项目集:豆瓣电影排行榜