排它平方数
小明正看著 203879 這個(gè)數(shù)字發(fā)呆。
原來(lái),203879 * 203879 = 41566646641
這有什么神奇呢?仔細(xì)觀察,203879 是個(gè)6位數(shù),并且它的每個(gè)數(shù)位上的數(shù)字都是不同的,并且它平方后的所有數(shù)位上都不出現(xiàn)組成它自身的數(shù)字。
具有這樣特點(diǎn)的6位數(shù)還有一個(gè),請(qǐng)你找出它!
再歸納一下篩選要求:
答案是一個(gè)6位的正整數(shù)。
請(qǐng)通過(guò)瀏覽器提交答案。
注意:只提交另一6位數(shù),題中已經(jīng)給出的這個(gè)不要提交。
注意:不要書(shū)寫(xiě)其它的內(nèi)容(比如:說(shuō)明性的文字)。
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
總結(jié)
- 上一篇: 面试题 08.03. Magic Ind
- 下一篇: 马斯克表示担心人工智能可能会在5年内超越