PAT Advanced 1023

来源:互联网 发布:java找不到或无法加载 编辑:程序博客网 时间:2024/06/10 02:42

水题,也只是简单的模拟

需要注意的一点是:

546对于这种double后会进位的数要留意,如果你输出的是092,那么就是少了进位的1。我也因为这个错了一次。

#include<iostream>#include<fstream>#include<string>using namespace std;int number[22];int times[10];int length;void solve(){int up=0;for (int i = length-1; i >=0; i--){number[i] =(number[i])* 2+up;up = number[i] / 10;number[i] %= 10;times[number[i]]--;}bool flag = true;for (int i = 0; i < 10; i++){if (times[i] != 0 || times[i] < 0){flag = false;break;}}if (flag){cout << "Yes" << endl;}elsecout << "No" << endl;flag = true;if (up)cout << up;for (int i = 0; i < length; i++){cout << number[i];}}void input(){string a;cin >> a;length = a.length();for (int i = 0; i < length; i++){number[i] = a[i] - '0';times[number[i]]++;}solve();}int main(){input();return 0;}


0 0
原创粉丝点击