【藍橋杯2015_C++】t3:奇妙的數字

題意:一個數字的平方和立方剛好把0~9的10個數字每個用且只用了一次,問這個數字是多少。

題目不難,看到的方法覺得挺巧妙的,用了set不會加入重複元素的特點,把數的平方和立方轉成字符串後拼接,按字符放進set中,若拼接後的字符串長度和set中元素個數都爲10,說明剛好把0~9這10個數字用且只用了一次。

代碼貼一下:

 1 #include <iostream>
 2 #include <sstream>
 3 #include <set>
 4 using namespace std;
 5 
 6 string i2s(int i){
 7     stringstream ss;
 8     string s;
 9     ss<<i;
10     ss>>s;
11     return s;
12 }
13 
14 bool check(string s){
15     set<char> se;
16     for(int i = 0;i<s.size();i++)
17         se.insert(s[i]);
18     return s.size()==10 && se.size() == 10;
19 }
20 
21 int main(){
22     for(int i = 0;i<100000;i++){
23         string a = i2s(i*i);
24         string b = i2s(i*i*i);
25         if(check(a+b)){
26             cout<<i<<endl;
27             cout<<i*i<<endl;
28             cout<<i*i*i<<endl;
29             break;
30         }
31     } 
32     
33     return 0; 
34 }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章