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

    这一道大数乘法问题,要注意输入是按照字符串进行读入并且为了满足大小位关系采用逆序转换
    要注意数组的意义以及循环结构和判断结构的边界
    代码如下:

    #include<cstdio>
    #include<string.h>
    
    using namespace std;
    
    const int N = 30;
    struct bign{
        int k[N];
        int len;
        bign(){
            memset(k,0,sizeof(k));
            len = 0;
        };
    };
    int flag[10];//初值全为0,0..9 0不用
    bign change(char s[]){
        bign a;
        a.len = strlen(s);
        for(int i = 0;i<a.len;i++){
            a.k[i] = s[a.len-1-i] - '0';//逆序赋值
        }
        return a;
    }
    bign doublemulit(bign a){
        bign b;
        int temp=0;
        for(int i = 0;i<a.len;i++){
            temp += a.k[i]*2;
            b.k[i] = temp%10;//余数
            temp /=10;//进位
            b.len++;
        }
        while(temp!=0){//处理超位情况
            b.k[b.len] = temp%10;
            temp /= 10;
            b.len++;
        }
        return b;
    }
    
    int main(){
        char s1[N];
        scanf("%s",s1);
        bign a = change(s1);
        for(int i = 0;i<a.len;i++){
            flag[a.k[i]]++;
        }
        bign b = doublemulit(a);
        bool flagi=true;
     
         for(int i = 0;i<b.len;i++){
                if(flag[b.k[i]]<=0){
                    printf("No");
                    flagi = false;
                    break;
                }else{
                    flag[b.k[i]]--;
                }
         }
         if(flagi==true) printf("Yes");
        
        printf("
    ");
        for(int i = b.len-1;i>=0;i--){
            printf("%1d",b.k[i]);
        }
        return 0;
    }
    
    
  • 相关阅读:
    Mysql 基础
    Python Cdn平台文件md5验证
    Linux内存cache/buffer剖析
    wget
    UTV
    智能DNS解析之edns-client-subnet篇
    Python Django
    OpenSSL SNI
    Python 基础(一)
    Python ORM
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13564350.html
Copyright © 2011-2022 走看看