题目标题: 排它平方数
小明正看着 203879 这个数字发呆。
原来,203879 * 203879 = 41566646641
这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。
具有这样特点的6位数还有一个,请你找出它!
再归纳一下筛选要求: 1. 6位正整数 2. 每个数位上的数字不同 3. 其平方数的每个数位不含原数字的任何组成数位 答案是一个6位的正整数。
请通过浏览器提交答案。
注意:只提交另一6位数,题中已经给出的这个不要提交。
注意:不要书写其它的内容(比如:说明性的文字)。
(5分)
#include <cstdio>#include <iostream>using namespace std;int main(){ //int 超了最大的数的范围,所以用long long long long i,t,m,q,j; long long a[6]; long long b[12]; for(i = 100000; i < 999999; i++){ t = i; m = t % 10; q = 0; while(t > 0){ a[q] = m; t = t/10; m = t%10; q++; } if(a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[0]!=a[4]&&a[0]!=a[5] && a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[1]!=a[5] && a[2]!=a[3]&&a[2]!=a[4]&&a[2]!=a[5] && a[3]!=a[4]&&a[3]!=a[5] && a[4]!=a[5]){ t = i*i; m = t%10; q = 0; while(t > 0){ b[q] = m; t = t/10; m = t%10; q++; } for(q = 0; q <= 5; q++){ for(j = 0; j <= 11; j++){ if(a[q] == b[j]) goto loop; else if(a[q] != b[j])continue; } loop:if(q!=6 && j!=12)break; } if(q == 6 && j == 12)PRintf("%lld %lld/n",i,i*i); } } return 0;}// 答案是 i == 639172
新闻热点
疑难解答