这道题最长会有20位 会存在精度问题 不能直接倍乘再进行比较
思路:
将输入字符串每一位存进vector a 再将vector每一位倍乘加上进位分别存进vector b
将b复制给c 对ac进行排序比较 是否数字一样 一样就输出yes 不同输出no
然后将b的从高位向低位进行输出
贴一下ac代码:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
string str;
cin>>str;
vector<int> a,b,c;
for(int i=0;i<str.size();++i) a.push_back(str[i]-'0');
int t=0;
for(int i=a.size()-1;i>=0;--i)
{
int s=a[i]+a[i]+t;
b.push_back(s%10);
t=s/10;
}
if(t) b.push_back(t);
c=b;
sort(a.begin(),a.end());
sort(c.begin(),c.end());
if(a==c) puts("Yes");
else puts("No");
for(int i=b.size()-1;i>=0;--i) cout<<b[i];
return 0;
}