# include <iostream>
# include <unordered_map>
using namespace std;
struct bign{
int d[100];
int len;
bign(): d{
0}, len(0){
}
bign(string str): bign(){
// 记得写 : bign()
len = str.size();
for(size_t i=0;i<str.size();++i)
d[i] = str[len-1 - i] - '0'; // 记得是len-1 - i而且要 - '0'
}
bign operator*(int b){
bign c;
int carry = 0;
for(int i=0;i<this->len;++i){
carry += this->d[i] * b;
c.d[c.len++] = carry % 10;
carry /= 10;
}
while(carry != 0){
c.d[c.len++] = carry % 10;
carry /=10;
}
return c;
}
};
// 最近喜欢这么控制输出
ostream & operator<<(ostream & out, bign & c){
for(int i = c.len - 1; i >= 0 ;--i){
cout << c.d[i];
}cout << endl;
return out;
}
// 看映射图是不是都归零了
bool IsThisWhatYouWant(unordered_map<int, int> m)
{
for(auto p: m)
if(p.second != 0)
return false;
return true;
}
int main()
{
string strnum;
cin >> strnum;
unordered_map<int, int> m;
for(char ch : strnum) m[ch-'0']++; // 建立原数字的映射图
bign c = bign(strnum) * 2;
for(int i=0;i<c.len;++i) m[c.d[i]]--; // 尝试归零
IsThisWhatYouWant(m) ? cout<<"Yes\n" : cout<<"No\n";
cout << c;
return 0;
}
【PAT甲级、C++、大整数运算】1023 Have Fun with Numbers (20分)
猜你喜欢
转载自blog.csdn.net/MYMarcoreus/article/details/110879803
今日推荐
周排行