zoukankan      html  css  js  c++  java
  • XidianOJ 1003 亮亮做加法

    其实就是高精度,只需要稍微一点改进 

    #include <stdio.h>
    #include <string.h>
    #include <ctype.h>
    int getNum(char ch){
        if (isdigit(ch))
            return ch - '0';
        else 
            return ch + 10 - 'A';
    }
    char getCh(int num){
        if (num >= 10) {
            return 'A' + num - 10;
        }
        else
            return num + '0';
    }
    void Cal(char*s1,char*s2,int b){
        char res[100];
        int len1 = strlen(s1),len2 = strlen(s2);
        
        int i,total = 0,i1 = len1 - 1,i2 = len2 - 1,x = 0;
        while (i1 >= 0) {
            int a1,a2;
            a1 = getNum(s1[i1]);
            a2 = getNum(s2[i2]);
            res[total] = getCh((a1 + a2 + x) % b);
            x = (a1 + a2 + x) / b;
            
            i1 --;
            i2 --;
            total ++;
        }
        
        while (i2 >= 0){
            int a;
            a = getNum(s2[i2]);
            res[total] = getCh((a + x) % b);
            x = (a + x) / b; 
            i2 --;
            total ++;
        }
        if (x > 0){
            res[total] = '1';
            total ++;
        }
        
        for (i=total-1;i>=0;i--){
            printf("%c",res[i]);
        }
        printf("
    ");
    }
    
    int main(){
        int b;
        char s1[100],s2[100];
        while (scanf("%d %s %s",&b,s1,s2)!=EOF){
            int res[100];
            int len1 = strlen(s1),len2 = strlen(s2);
            
            if (len1 < len2) {
                Cal(s1,s2,b);
            }
            else {
                Cal(s2,s1,b);
            }
        }
        
        return 0;
    } 
  • 相关阅读:
    bzoj2161 布娃娃
    bzoj2161 布娃娃
    Tyvj1054
    Tyvj1054
    Tyvj1053
    Tyvj1053
    hdu3265 Poster(扫描线)
    hdu3265 Poster(扫描线)
    hdu3265(好题翻译)
    hdu3265(好题翻译)
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6059931.html
Copyright © 2011-2022 走看看