zoukankan      html  css  js  c++  java
  • HDU_1230——火星A+B,加法进制问题

    Problem Description
    读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的;地球上的10进制数38,在火星上记为“1,1,1,0”,因为火星个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的……
     
    Input
    测试输入包含若干测试用例,每个测试用例占一行,包含两个火星正整数A和B,火星整数的相邻两位数用逗号分隔,A和B之间有一个空格间隔。当A或B为0时输入结束,相应的结果不要输出。
     
    Output
    对每个测试用例输出1行,即火星表示法的A+B的值。
     
    Sample Input
    1,0 2,1 4,2,0 1,2,0 1 10,6,4,2,1 0 0
     
    Sample Output
    1,0,1 1,1,1,0 1,0,0,0,0,0
      1 #include <cstdio>
      2 int prime[30]={0};
      3 void init(void)
      4 {
      5     int i,j,n;
      6     for(i=0,n=2;i<30;i++)
      7         {
      8             for(;;n++)
      9                 {
     10                     for(j=2;j<=n/2;j++)
     11                         {
     12                             if(n%j==0)
     13                                 break;
     14                         }
     15                     if(j>n/2)
     16                         {
     17                             prime[i]=n++;
     18                             break;
     19                         }
     20                 }
     21         }
     22 }
     23 int main()
     24 {
     25     char str[200];
     26     int i,j;
     27     init();
     28     while(gets(str)!=NULL)    //scanf不接受空格 
     29         {
     30             int a[100]={0},b[100]={0},s[100]={0},n=0,la=0,lb=0;
     31             for(i=0;;i++)
     32                 {
     33                     if(str[i]==',')
     34                         {
     35                             a[la++]=n;
     36                             i++;
     37                             n=0;
     38                         }
     39                     else if(str[i]==' ')
     40                         {
     41                             a[la++]=n;
     42                             for(i++,n=0;;i++)
     43                                 {
     44                                     if(str[i]=='')
     45                                         {
     46                                             b[lb++]=n;
     47                                             break;
     48                                         }
     49                                     if(str[i]==',')
     50                                         {
     51                                             b[lb++]=n;
     52                                             i++;
     53                                             n=0;
     54                                         }
     55                                     n=n*10+str[i]-'0';
     56                                 }
     57                             break;
     58                         }
     59                     n=n*10+str[i]-'0';
     60                 }
     61                 
     62             for(la--,lb--,i=0;la>=0&&lb>=0;la--,lb--,i++)
     63                 {
     64                     s[i] += a[la]+b[lb];
     65                     if(s[i]>=prime[i])
     66                         {
     67                             s[i+1]=s[i]/prime[i];
     68                             s[i]=s[i]%prime[i];
     69                         }
     70                     if(la==0&&lb!=0)
     71                         {
     72                             for(lb--,i++;lb>=0;lb--,i++)
     73                                 {
     74                                     s[i] += b[lb];
     75                                     if(s[i]>=prime[i])
     76                                         {
     77                                             s[i+1]=s[i]/prime[i];
     78                                             s[i]=s[i]%prime[i];
     79                                         }
     80                                 }
     81                             break;
     82                         }
     83                     else if(lb==0&&la!=0)
     84                         {
     85                             for(la--,i++;la>=0;la--,i++)
     86                                 {
     87                                     s[i] += a[la];
     88                                     if(s[i]>=prime[i])
     89                                         {
     90                                             s[i+1]=s[i]/prime[i];
     91                                             s[i]=s[i]%prime[i];
     92                                         }
     93                                 }
     94                             break;
     95                         }
     96                 }
     97             for(i=99;s[i]==0;i--);
     98             for(;i>=0;i--)
     99                 {
    100                     printf(i==0?"%d
    ":"%d,",s[i]);
    101                 }
    102         }
    103     return 0;
    104 }
    ——现在的努力是为了小时候吹过的牛B!!
  • 相关阅读:
    Django数据库配置
    Django视图函数
    Django环境搭建和项目创建
    mysql5.7的安装
    在VS中手工创建一个最简单的WPF程序
    1.1 从UNIX到Linux的发展历程
    2 Class类
    1 反射
    8.6 GOF设计模式四: 策略模式… Strategy Pattern
    8.5 GOF设计模式四: 观察者模式Observer
  • 原文地址:https://www.cnblogs.com/pingge/p/3190859.html
Copyright © 2011-2022 走看看