问给你的数的两倍的那个数是否由原来的数的各位重新排列组成。
大概是道大数题吧。。
反正挺简单的。。
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define INF 0x3fffffff
using namespace std;
int main()
{
int m[10],n[10];
memset(m,0,sizeof(m));
memset(n,0,sizeof(n));
string a,b;
int len;
cin>>a;
len=a.size();
if (a[0]-'5'>=0)
{
for (int i=0;i<=len;i++)
b[i]='0';
for (int i=len-1;i>=0;i--)
{
b[i+1]=b[i+1]+(a[i]-'0')*2;
while(b[i+1]-'0'>=10)
{
b[i+1]=b[i+1]-10;
b[i]++;
}
}
cout<<"No"<<endl;
for (int i=0;i<=len;i++)
cout<<b[i];
}
else
{
for (int i=0;i<len;i++)
m[a[i]-'0']++;
for (int i=0;i<len;i++)
b[i]='0';
for (int i=len-1;i>=0;i--)
{
b[i]=b[i]+(a[i]-'0')*2;
while(b[i]-'0'>=10)
{
b[i]=b[i]-10;
b[i-1]++;
}
}
for (int i=0;i<len;i++)
n[b[i]-'0']++;
int i;
for (i=0;i<=9;i++)
if (m[i]!=n[i])
{
cout<<"No"<<endl;
for (int i=0;i<len;i++)
cout<<b[i];
break;
}
if (i==10)
{
cout<<"Yes"<<endl;
for (int i=0;i<len;i++)
cout<<b[i];
}
}
}