zoukankan      html  css  js  c++  java
  • PAT 1023 Have Fun with Numbers

    #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("
    ");
    }
    
    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] != ''; 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
    ");
        } else {
            printf("No
    ");
        }
        if (!no_carry) printf("1");
        print(num);
        return 0;
    }

    我觉得玩这种输出陷阱很没意思,给个反向例子会死么

  • 相关阅读:
    MSP430G2553 4x4矩阵键盘
    数论 (1)
    吐血分享一款免费看所有付费影视的app,不好用来石欠我
    Nginx如何部署静态web项目
    SpringBoot-RestTemplate实现调用第三方API
    信息收集小技巧
    kali常用命令
    kali中的Firefox改中文
    反射与注解
    MyBatis-Plus 基本用法
  • 原文地址:https://www.cnblogs.com/lailailai/p/4028854.html
Copyright © 2011-2022 走看看