hdu1230火星A+B

    技术2024-11-28  18

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

        #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;    }

    最新回复(0)