题目链接 PAT A1023
我遇到了测试点2和7过不去的问题,但是我真的不知道问题在哪,拜托各位大佬啦!
错误的代码:
#include<bits/stdc++.h>
#define N 30
using namespace std;
int main(){
char a[N];
vector<char> b;
int record[N] = {0},t = 0;//记录出现了哪些数字,进位项
cin >> a;
//记录数字并且乘2放入b中
if(a[0] == '0'&&strlen(a) == 1) cout << "Yes" << endl << 0;
else {
for(int i = strlen(a) - 1;i >= 0;i--) {
record[a[i] - '0']++;
b.push_back(((a[i] - '0') * 2 % 10 + t)%10 + '0');
t = (a[i] - '0') * 2 / 10 + ((a[i] - '0') * 2 % 10 + t)/10;
}
//如果长度不对等,没必要比了
if(b.size() != strlen(a)) cout << "No" << endl;
else {
int f = 1;
//对比数字
for(int i = 0;i < b.size();i++)
if(record[b[i] - '0']) record[b[i] - '0']--;
else {f = 0;break;}
//都对上就Yes,不行No
if(f) cout << "Yes" << endl;
else cout << "No" << endl;
}
//输出乘2的数字
for(int i = b.size() - 1;i >= 0;i--)
cout << b[i];
}
return 0;
}
xswl
你是傻子
原来是人傻了,写着写着忘记进位了