[数据结构 算法] 2015年蓝桥杯A组C/C++第三题奇妙的数字
生活随笔
收集整理的這篇文章主要介紹了
[数据结构 算法] 2015年蓝桥杯A组C/C++第三题奇妙的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
奇妙的數字
小明發現了一個奇妙的數字。它的平方和立方正好把0~9的10個數字每個用且只用了一次。
你能猜出這個數字是多少嗎?
請填寫該數字,不要填寫任何多余的內容。
這題我用字符串處理的方法來做的。因為數量不大,首先估計了一下當數字超過99時,立方和平方的位數超過了10,不符合條件,當數字低于47時,位數和不滿10,所以數據的范圍為47到99.
接著思路是,開辟一個visited數字,用來標記數字是否使用。將平方和立方轉換為字符串,遍歷字符串,將當前字符對應的數字,標記為使用,最后再判斷visited數組是否所有都被置為使用。
#include <iostream> #include <string> #include <sstream> using namespace std; int visited[10];int main() {for (int i=47;i<=99;i++){for (int i=0;i<10;i++)visited[i] = 0;//初始化數字狀態數組stringstream s;//用來將int 轉化為stringstring s2, s3;s << i*i;s2 = s.str();//s2存平方s << i*i*i;s3 = s.str();//s3存立方for (int i=0;i<s2.length();i++)visited[s2[i] - 48] = 1;//遍歷平方字符串,將此數字標記為已使用,數字的ASCII-48為數字的數值for (int i = 0; i < s3.length(); i++)visited[s3[i] - 48] = 1;//同理int j;for (j=0;j<10;j++)if (visited[j]==0)//判斷數字是否全部使用break;if (j==10)//如果沒有跳出,則j為10,所有數字都被使用cout << i;}return 1; }總結
以上是生活随笔為你收集整理的[数据结构 算法] 2015年蓝桥杯A组C/C++第三题奇妙的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查询电脑硬盘序列号
- 下一篇: 网页鼠标指针样式(cursor属性)