zoukankan      html  css  js  c++  java
  • hdu 1230 火星A+B

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1230

    第i位表示的实际大小是前i 个素数的乘积那么多,(第0位表示1) 进位规则是这一位减去p[i] (例如第0位减去p[0]==2)  高以为加1 ,由于更加难进位了,所以加法先相加,然后一次进位扫描就能保证每一位在范围内。  

    输入输出有点麻烦,是这个题的考点吧


    代码:

    #include<iostream>
    #include<string>
    #include<vector>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    int p[101];
    
    vector<int>  prime;
    
    int na[25];
    int nb[25];
    int ans[26];
    
    void pre()
    {
      for(int i=2;i<=10;i++)
       if(p[i]==0)
        for(int j=i*i;j<=100;j+=i)
           p[j]=1;
      for(int i=2;i<=100;i++)
          if(p[i]==0)  prime.push_back(i);
    }
    
    int max(int a,int b)
    {
       return a>b?a:b;
    
    }
    int main()
    {
      pre();
    
      string a,b;
      while(cin>>a>>b)
      {
          memset(na,0,sizeof(na));
          memset(nb,0,sizeof(nb));
    
          if(a=="0"&&b=="0")   break;
          int aa=0,bb=0;
          int cnta=0;
          int cntb=0;
    
          for(int i=0;i<a.length();i++)
            {
               if(a[i]==',')
               {
                  cnta++;
    
               }
    
               else
               {
                 na[cnta]=10*na[cnta]+a[i]-'0';
    
               }
            }
    
          for(int i=0;i<b.length();i++)
            {
               if(b[i]==',')
               {
                  cntb++;
    
               }
    
               else
               {
                 nb[cntb]=10*nb[cntb]+b[i]-'0';
    
               }
            }
    
    
          reverse(na,na+cnta+1);
          reverse(nb,nb+cntb+1);
    
    
    
         for(int i=0;i<25;i++)
           ans[i]=na[i]+nb[i];
    
         for(int i=0;i<25;i++)
            if(ans[i]>=prime[i])
            {
               ans[i]-=prime[i];
               ans[i+1]+=1;
            }
    
         int start=0;
         for(int i=25;i>=0;i--)
           {
              if(ans[i]==0) continue;
              else
              {
                 start=i;
                 break;
              }
           }
    
         for(int i=start;i>0;i--)
          {
              cout<<ans[i]<<',';
          }
    
         cout<<ans[0]<<endl;
    
      }
    }
    


  • 相关阅读:
    MySQL8.0 不能使用group by解决方法
    xtrabackup备份恢复
    pycharm使用
    CMDB开发(三)
    Restful接口规范
    django-rest-framework框架(一)
    CMDB开发(二)
    CMDB开发(一)
    数据可视化之matplotlib模块
    数据分析之pyecharts v1版本
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3339266.html
Copyright © 2011-2022 走看看