zoukankan      html  css  js  c++  java
  • ACM1230_火星A+B(进位的运算)


    //只要看懂火星A+B的进位关系就好了

    #include<stdio.h>
    int p[26]={1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
    int main()
    {
        int a[26],b[26],sum[26];
        int m,n,i,j,k,add,x,y,max;
        char c;
        while(1)
        {
            for(i=0;i<=25;i++)//此处用于初始化 
            {
                a[i]=0;b[i]=0;sum[i]=0;
            }
            for(i=1;i<=25;i++)//对a的输入进行处理 
            {
                scanf("%d%c",&a[i],&c);//将‘,’给过滤掉 
                if(c==' ')break;
            }
            m=i;//对a的长度进行存储 
            for(i=1;i<=25;i++)//对b的输入进行处理 
            {
                scanf("%d%c",&b[i],&c);////将‘,’给过滤掉 
                if(c=='
    ')break;
            }
            n=i;//对b的长度进行存储 
            if(a[1]==0&&b[1]==0)break;//判断是否结束这个程序 
            k=m>n?m:n;//比较a,b升序的大小 
            for(i=1,add=0,max=k;i<=max;i++)//add 当作进位 值 
            {
                if(m>=1)x=a[m--];//从低位进行操作 ,并取出值 
                else x=0;
                if(n>=1)y=b[n--];//从低位进行操作 并取出值 
                else y=0;
                sum[k--]=(x+y+add)%p[i];//进行火星A+B的操作 
                add=(x+y+add)/p[i];//计算下一个进位的值 
            }
            sum[0]=add;
            if(sum[0]!=0)printf("%d,",sum[0]);
            for(i=1;i<max;i++)
                printf("%d,",sum[i]);
            printf("%d
    ",sum[max]);
        }
        return 0;
    }
  • 相关阅读:
    日报10.29
    日报10.28
    日报10.27
    周进度总结-6
    日报10.25
    日报10.23
    日报10.22
    日报10.21
    日报10.18
    STL bitset
  • 原文地址:https://www.cnblogs.com/orangebook/p/3186103.html
Copyright © 2011-2022 走看看