zoukankan      html  css  js  c++  java
  • ZOJ Problem Set

    一道简单题,简单的20进制加减法,我这里代码写的不够优美,还是可以有所改进,不过简单题懒得改了。。。

    #include <stdio.h>
    #include <string.h>
    
    int invert(char c)
    {
        if(c<97)
            return c-48;
        else
            return c-87;
    }
    
    char reinvert(int a)
    {
        if(a<10)
            return a+48;
        else
            return a+87;
    }
    
    char add(char a1,char a2,int *c)
    {
        int t1,t2,sum;
        t1=invert(a1);
        t2=invert(a2);
        sum=t1+t2+*c;
        if(sum<20)
        {
            *c=0;
        }
        else
        {
            sum-=20;
            *c=1;
        }
        return reinvert(sum);
    }
    
    void inversion(char *a)
    {
        int len=strlen(a);
        for(int i=0,j=len-1;i<=j;i++,j--)
        {
            char c=a[i];
            a[i]=a[j];
            a[j]=c;
        }
    }
    
    int main()
    {
        char a1[120],a2[120];
        while(scanf("%s%s",a1,a2)!=EOF)
        {
            inversion(a1);
            inversion(a2);
            int len1=strlen(a1),len2=strlen(a2),i;
            int c=0;
            for(i=0;i<len1&&i<len2;i++)
                a1[i]=add(a1[i],a2[i],&c);
            
            if(len1>len2)
            {
                for(;i<len1;i++)
                    a1[i]=add(a1[i],'0',&c);
                if(c!=0)
                    a1[i++]='1';
                a1[i]='';
                len1=strlen(a1);
            }
            else if(len1==len2)
            {
                if(c!=0)
                {    a1[i]='1';
                    len1++;
                }
            }
            else
            {
                for(;i<len2;i++)
                    a1[i]=add(a2[i],'0',&c);
                if(c!=0)
                    a1[i++]='1';
                a1[i]='';
                len1=strlen(a1);
            }
    
            for(i=len1-1;i>=0;i--)
                printf("%c",a1[i]);
            printf("
    ");
        }
    
        return 0;
    }
  • 相关阅读:
    列表和元组
    UVM宏
    UVM中重要函数
    组合模式(composite)
    装饰器模式(Decorator)
    适配器模式(Adapter)
    桥接模式
    原型模式(prototype)
    单例模式(singleton)
    UML类图
  • 原文地址:https://www.cnblogs.com/xlturing/p/3324533.html
Copyright © 2011-2022 走看看