排它平方数
小明正看著 203879 這個數字發呆。
原來,203879 * 203879 = 41566646641
這有什么神奇呢?仔細觀察,203879 是個6位數,并且它的每個數位上的數字都是不同的,并且它平方后的所有數位上都不出現組成它自身的數字。
具有這樣特點的6位數還有一個,請你找出它!
再歸納一下篩選要求:
答案是一個6位的正整數。
請通過瀏覽器提交答案。
注意:只提交另一6位數,題中已經給出的這個不要提交。
注意:不要書寫其它的內容(比如:說明性的文字)。
Code
C++
#include <iostream> #include <sstream> #include <cstring> #include <string> using namespace std; void i2s(long long num,string &str) {stringstream ss;ss<<num;ss>>str; } bool check(long long i1,long long i2) {string s1,s2;i2s(i1,s1);i2s(i2,s2);for(long long i=0;i<s1.length();i++)if(s2.find(s1[i])!=string::npos) return false;return true;} int main() {for(int a=1;a<10;a++)for(int b=0;b<10;b++)if(b!=a)for(int c=0;c<10;c++)if(c!=a&&c!=b)for(int d=0;d<10;d++)if(d!=a&&d!=b&&d!=c)for(int e=0;e<10;e++)if(e!=a&&e!=b&&e!=c&&e!=d)for(int f=0;f<10;f++)if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e){long long i1=a*100000+b*10000+c*1000+d*100+e*10+f;long long i2=i1*i1;if(check(i1,i2)) cout<<i1<<endl;}return 0; }Python
if __name__ == '__main__':for num in range(100000, 1000000):square = num ** 2if len(set(str(num))) == 6 and not (set(str(num)) & set(str(square))):print(f'{num} * {num} = {num ** 2}')203879 * 203879 = 41566646641
639172 * 639172 = 408540845584
Answer:639172
總結
- 上一篇: 面试题 08.03. Magic Ind
- 下一篇: 马斯克表示担心人工智能可能会在5年内超越