题目大意:把给定数 N 乘以2,判断结果 M 中的各位数是不是与 N 中的各位数只是在位置顺序上不同。
解题思路:简单大数乘法。
题目链接:https://www.patest.cn/contests/pat-a-practise/1023
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
int main(int argc, char** argv) {
char a[22],b[22],c[22];
scanf("%s",a);
int len = strlen(a);
int push = 0;//进位
int cnt = 0;
for(int i=len-1;i>=0;--i)
{
int x = (a[i]-'0')*2;
if(x+push >= 10)
{
b[cnt++] = (x+push) - 10 +'0';
push = 1;
}
else
{
b[cnt++] = x+push + '0';
push = 0;
}
}
if(push == 1)
{
b[cnt++] = 1+'0';
}
if(cnt != len)
{
cout << "No" <<endl;
for(int i=cnt-1;i>=0;--i)
cout<<b[i];
cout << endl;
}
else
{
strcpy(c,b);
sort(a,a+len);
sort(b,b+len);
if(strcmp(a,b) == 0)
cout << "Yes" << endl;
else
cout << "No" << endl;
for(int i=cnt-1;i>=0;--i)
cout<<c[i];
cout << endl;
}
return 0;
}