• UVALive 4660 A+B


    Regionals 2009 >> Asia - Jakarta

    问题链接UVALive 4660 A+B入门训练题,用C语言编写程序。

    问题分析

    这是一个进制问题,输入的两个数不知道是几进制,也就是几进制都可以,求的是两个数最小的和,结果以10进制输出。

    对于输入的两个数来说,进制越小值越小,所以尽可能选进制小的。最小的可能的进制就是一串数字中最大的数字加上1。只要两个数的进制知道了,事情就好办了。

    另外,需要详细知道函数atoi()的原理,才能够随心所欲地解决进制有关的问题。

    程序说明

    程序中,使用字符流读方式,使用函数getchar()读入数据,同时求得数的最小进制。

    封装了一个函数atoi()来实现字符串转整数。


    AC的C语言程序如下:

    /* UVALive4660 A+B */
    
    #include <stdio.h>
    
    typedef unsigned long long ULL;
    
    #define MAXN 100
    
    ULL atoi(char *p, int base)
    {
        ULL result = 0;
    
        while(*p) {
            result *= base;
            result += *p - '0';
            p++;
        }
    
        return result;
    }
    
    int main(void)
    {
        int n, sbase, tbase, i;
        char c, s[MAXN], t[MAXN];
        ULL val1, val2;
    
        scanf("%d", &n);
        getchar();
        while(n--) {
            sbase = 0;
            i = 0;
            while((c = getchar()) != ' ') {
                if(c > sbase)
                    sbase = c;
                s[i++] = c;
            }
            s[i] = '';
            sbase = sbase - '0' + 1;
    
            tbase = 0;
            i = 0;
            while((c = getchar()) != '
    ' && c != EOF) {
                if(c > tbase)
                    tbase = c;
                t[i++] = c;
            }
            t[i] = '';
            tbase = tbase - '0' + 1;
    
            val1 = atoi(s, sbase);
            val2 = atoi(t, tbase);
    
            printf("%lld
    ", val1 + val2);
        }
    
        return 0;
    }




  • 相关阅读:
    Java类加载机制
    Java内存模型
    遍历集合的常见方式,排序,用lambda表示是怎样的
    包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类
    接口
    继承
    面向对象的四大特征 封装 继承 多态 抽象
    面向对象
    二维数组及Arrays工具类
    数组(冒泡,选择,排序)
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564501.html
Copyright © 2020-2023  润新知