首页 > 编程 > C++ > 正文

第四届蓝桥杯C++A组——排它平方数

2019-11-06 07:34:06
字体:
来源:转载
供稿:网友
小明正看着 203879 这个数字发呆。原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。具有这样特点的6位数还有一个,请你找出它!再归纳一下筛选要求:1. 6位正整数2. 每个数位上的数字不同3. 其平方数的每个数位不含原数字的任何组成数位

答案是一个6位的正整数。

请通过浏览器提交答案。 注意:只提交另一6位数,题中已经给出的这个不要提交。 注意:不要书写其它的内容(比如:说明性的文字)。

嘛,暴力一发

#include <iostream>#include <cstring>#include <string>#include <vector>#include <queue>#include <cstdio>#include <set>#include <cmath>#include <algorithm>#include <queue>#define INF 0x3f3f3f3f#define MAXN 100005#define Mod 10001using namespace std;int main(){ int a[10],b[10]; for(a[1]=1; a[1]<=9; ++a[1]) for(a[2]=0; a[2]<=9; ++a[2]) for(a[3]=0; a[3]<=9; ++a[3]) for(a[4]=0; a[4]<=9; ++a[4]) for(a[5]=0; a[5]<=9; ++a[5]) for(a[6]=0; a[6]<=9; ++a[6]) { int flag1=1; for(int i=1;i<=6;++i) b[i]=a[i]; sort(b+1,b+7); for(int i=1; i<6; ++i) if(b[i]==b[i+1]) flag1=0; if(flag1) { long long sum=a[1]*100000+a[2]*10000+a[3]*1000+a[4]*100+a[5]*10+a[6]; long long ans=sum*sum; int flag=0; while(ans!=0) { int x=ans%10; if(x==a[1]||x==a[2]||x==a[3]||x==a[4]||x==a[5]||x==a[6]) flag=1; ans/=10; } if(!flag) cout<<sum<<endl; } } return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选