现在的位置: 首页 > 综合 > 正文

hdu1230火星A+B

2013年06月08日 ⁄ 综合 ⁄ 共 1958字 ⁄ 字号 评论关闭

今天秒掉此题,运气比较好,特此纪念一下,当然,这是一道水题,代码如下:

    #include <iostream>
#include <cmath>
using namespace
std;
const int n = 110;
int a[n];
int s = 0;
void prim(int
*a)
{
     bool b[n];
     memset(b,true,sizeof(b));
     for (int i
= 4; i<= n; i+=2){
         b[i]=false;   
     }
     for (int i =
3; i <= sqrt(n); i +=2){
         if (b[i]){
            for (int j =
2*i; j <= n; j +=i){
                b[j] = false;     
           
}         
         }   
     }
     s = 0;
     for (int i = 2;
i <= n; i ++){
         if (b[i]){
            a[s++] = i;         

         }   
     }   
}
int isNum(char x)
{
    if (x
>= '0' && x <= '9')return 1;
    return 0;   
}
int
main()
{
    prim(a);
    char x[100], y[100];
    while (EOF !=
scanf("%s",x)){
          scanf("%s",y);
          if (!(strcmp("0",y) +
strcmp("0",x)))break;
          int lenx = strlen(x)-1, leny =
strlen(y)-1;
          int h[100]={0};
          int kk = 0;
         
while(lenx !=-1 && leny != -1){
              if (isNum(x[lenx])
&& isNum(y[leny])){
                 h[kk++] = x[lenx]-'0' +
y[leny]-'0';
                 if
(isNum(y[leny-1])){h[kk-1]+=10*(y[leny-1]-'0');leny--;}
                 if
(isNum(x[lenx-1])){h[kk-1]+=10*(x[lenx-1]-'0');lenx--;}                  

              }
              lenx--;leny--;       
         
}
          while(lenx !=-1){
              if
(isNum(x[lenx])){
                 h[kk++] = x[lenx]-'0';
                
if (isNum(x[lenx-1])){h[kk-1]+=10*(x[lenx-1]-'0');lenx--;}                  

              }
              lenx--;     
          }
         
while(leny !=-1){
              if (isNum(y[leny])){
                
h[kk++] = y[leny]-'0';
                 if
(isNum(y[leny-1])){h[kk-1]+=10*(y[leny-1]-'0');leny--;}                  

              }
              leny--;       
          }
         
for (int i = 0;i < kk; i ++){
              if (h[i] >=
a[i]){
                 int temp = h[i]/a[i];
                
h[i]%=a[i];
                 h[i+1]+=temp;          
             
}
          }
          while (h[kk])kk++;
         
          for
(int i = kk-1;i >= 0;i --){
             
printf("%d",h[i]);
              if(i!=0)printf(",");
         
}
          printf("/n");
    }
    return 0;   
}

抱歉!评论已关闭.