这是我写的,跑不出来结果: 思想是把x和x*x全部拆分,放到vector1,vector2里,然后遍历vector1,vector2,如果vector1和vectorr2的每一位都不同就输出
js
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<LL>t1,t2;
int flag=0;
int main()
{
for(int i=100000;i<1000000;i++)
{
LL sum=i*i;
while(sum)
{
t1.push_back(sum%10);
sum/=10;
}
while(i)
{
t2.push_back(i%10);
i/=10;
}
for(int j=0;j<t2.size();j++)
{
for(int i=0;i<t1.size();i++)
{
if(t1[i]!=t2[j]&&(t2[0]!=t2[1]&&t2[1]!=t2[3]&&t2[3]!=t2[4]&&t2[4]!=t2[5]&&t2[5]))flag=1;
}
}
if(flag)cout<<i;
}
return 0;
}
这是别人写的: 2013年c++A组题2_哔哩哔哩_bilibili
js
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
//void is2(LL x,string &str)
//{
// stringstream ss;
// ss<<x;
// ss>>str;
//}
bool check(LL a,LL b)
{
string str_a=to_string(a);
string str_b=to_string(b);
for(int i=0;i<str_a.size();i++)
{
if(str_b.find(str_a[i])!=string::npos)
return false;
}
return true;
}
int main()
{
for(int i=1;i<10;i++)
{
for(int j=0;j<10;j++)
{
if(i!=j)
for(int k=0;k<10;k++)
{ if(k!=i&&k!=j)
for(int l=0;l<10;l++)
{
if(l!=i&&l!=j&&l!=k)
for(int m=0;m<10;m++)
{
if(m!=i&&m!=j&&m!=k&&m!=l)
for(int n=0;n<10;n++)
{
if(n!=i&&n!=j&&n!=k&&n!=l&&n!=m)
{
LL x=i*100000+j*10000+k*1000+l*100+m*10+n;
if(check(x,x*x))
cout<<x<<" "<<x*x<<endl;
}
}
}
}
}
}
}
return 0;
}