PAT 1023 Have Fun with Numbers
2014-10-16 15:10
302 查看
#include <cstdio> #include <cstdlib> #include <vector> using namespace std; bool double_num(vector<char> &num) { int carry = 0; int i = num.size() - 1; while (i>=0) { int d = num[i] * 2 + carry; carry = d / 10; num[i]= d % 10; i--; } return carry < 1; } void stat_count(vector<char>& num, int* cnt) { for (int i=num.size() - 1; i>=0; i--) { cnt[num[i]]++; } } bool is_same_digits(vector<char>& num, int* cnt) { int cur_cnt[10] = {0}; stat_count(num, cur_cnt); for (int i=0; i<10; i++) { if (cnt[i] != cur_cnt[i]) return false; } return true; } void print(vector<char> &num) { int len = num.size(); for (int i=0; i<len; i++) { printf("%d", num[i]); } printf("\n"); } int main() { const int MAX_DIGITS = 20; vector<char> num; char buf[MAX_DIGITS + 1]; int count[10] = {0}; scanf("%s", buf); for (int i=0; buf[i] != '\0'; i++) { if (num.empty() && buf[i] == '0') continue; // skip leading zeros num.push_back(buf[i] - '0'); } if (num.empty()) num.push_back(0); // stat original number digit count stat_count(num, count); bool found = false; bool no_carry = double_num(num); bool is_same = is_same_digits(num, count); if (is_same) { printf("Yes\n"); } else { printf("No\n"); } if (!no_carry) printf("1"); print(num); return 0; }
我觉得玩这种输出陷阱很没意思,给个反向例子会死么
相关文章推荐
- 【PAT】1023. Have Fun with Numbers
- PAT - 甲级 - 1023. Have Fun with Numbers (20)(大整数)
- PAT_1023: Have Fun with Numbers
- PAT 甲级 1023. Have Fun with Numbers
- pat 1023. Have Fun with Numbers (20)
- PAT (Advanced Level) Practise 1023. Have Fun with Numbers (20)
- pat1023 Have Fun with Numbers
- PAT1023. Have Fun with Numbers (20)
- PAT: 1023. Have Fun with Numbers (20)
- 浙大 PAT Advanced level 1023. Have Fun with Numbers (20)
- pat 1023. Have Fun with Numbers
- PAT(A) - 1023. Have Fun with Numbers (20)
- 【PAT (Advanced Level)】1023. Have Fun with Numbers (20)
- 1023. Have Fun with Numbers (20)-PAT甲级真题(大整数运算)
- 【PAT】【Advanced Level】1023. Have Fun with Numbers (20)
- PAT (Advanced Level) Practise 1023 Have Fun with Numbers (20)
- pat甲 1023. Have Fun with Numbers(模拟+set)
- 1023. Have Fun with Numbers (20) @ PAT (Advanced Level) Practise
- PAT 1023. Have Fun with Numbers (20) 【题目开始没理解好,后来折腾半天才搞懂】
- 【PAT Advanced Level】1023. Have Fun with Numbers (20)