zoukankan      html  css  js  c++  java
  • HDU1230

    水题~~~

    不要去关心题意中为什么10进制38在火星上表示成1110,其实我也不知道,但是这并不影响做题。

    例如:4,2,0  1,2,0

    个位0+0=0<2 所以就是0

    2+2>3 所以为1 且进位1

    4+1+1(进位)=6>5 所以就是1

    结果 1 1 1 0 

    View Code
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 #include<algorithm>
     6 using namespace std;
     7 const int maxn = 30;
     8 int prime[ maxn ];
     9 void init_prime( ){
    10     prime[ 0 ]=2;
    11     prime[ 1 ]=3;
    12     int cnt=2;
    13     for( int i=5;i<500;i++ ){
    14         int f=-1;
    15         for( int j=2;j<i;j++ ){
    16             if( i%j==0 ){
    17                 f=1;
    18                 break;
    19             }
    20         }
    21         if( f==-1 )
    22         {
    23             prime[ cnt++ ]=i;
    24             if( cnt==28 )
    25                 break;
    26         }
    27     }
    28 }
    29 int main(){
    30     char aa[ 105 ],bb[ 105 ];
    31     init_prime();
    32     while( scanf("%s %s",aa,bb)!=EOF ){
    33         if( aa[0]=='0'&&bb[0]=='0' )
    34             break;
    35         int a[ 105 ],b[ 105 ];
    36         int lena,lenb;
    37         lena=lenb=0;
    38         memset( a,0,sizeof( a ));
    39         memset( b,0,sizeof( b ));
    40         int tmp;
    41         for( int i=strlen( aa )-1;i>=0;i-- ){
    42             tmp=0;
    43             if( aa[i]==',' )
    44                 continue;
    45             for( int j=i;;j-- ){
    46                 if( j<0||aa[j]==',' ){
    47                     i=j;
    48                     lena++;
    49                     break;
    50                 }
    51                 a[ lena ]+=(( int )( pow(10.0,tmp) )*( aa[j]-'0' ));
    52                 tmp++;
    53             }
    54         }
    55         for( int i=strlen( bb )-1;i>=0;i-- ){
    56             tmp=0;
    57             if( bb[i]==',' )
    58                 continue;
    59             for( int j=i;;j-- ){
    60                 if( j<0||bb[j]==',' ){
    61                     i=j;
    62                     lenb++;
    63                     break;
    64                 }
    65                 b[ lenb ]+=(( int )( pow(10.0,tmp) )*( bb[j]-'0' ));
    66                 tmp++;
    67             }
    68         }//分别取出 aa,bb中的数字,放在a,b数组中
    69         int ans[ 105 ];
    70         memset( ans,0,sizeof( ans ));
    71         int cnt=0,t=0;
    72         int ia,ib;
    73         ia=ib=0;
    74         while( ia<lena||ib<lenb ){
    75             ans[ cnt ]=a[ ia ]+b[ ib ]+t;
    76             t=0;
    77             if( ans[ cnt ]>=prime[ cnt ] ){
    78                 ans[ cnt ]-=prime[ cnt ];
    79                 t=1;
    80             }
    81             cnt++,ia++,ib++;
    82         }
    83         if( t!=0 )
    84             ans[ cnt ]=t;
    85         while( ans[cnt]==0 )
    86             cnt--;
    87         for( int i=cnt;i>=0;i-- )
    88             if( i==cnt )
    89                 printf("%d",ans[i]);
    90             else
    91                 printf(",%d",ans[i]);
    92         printf("\n");
    93     }
    94     return 0;
    95 }
    keep moving...
  • 相关阅读:
    C++:显式和隐式初始化、显式和隐式类型转换
    [软件工程]Windows下SVN服务端的配置
    国外免费电子书下载网站辑(二)
    Ubuntu12.04下eclipse代码提示框模糊的解决办法
    [.NET] 坐标变换
    生成了libgsl.lib、libgslcblas.lib文件
    [C#]as 和 is 的区别
    xp安装.net4.0失败解决方法
    国外免费电子书下载网站辑(一)
    [转]不同网段共享打印机
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2923841.html
Copyright © 2011-2022 走看看