20分求助 只对了第二点(急)
查看原帖
20分求助 只对了第二点(急)
775551
caojiaming楼主2022/11/21 11:48
#include <bits/stdc++.h>
using namespace std;
bool a[10001];
int zhishu[10001];
void shai()
{
    int cur=0;
    memset(a,true,10001);
    a[0]=false;
    a[1]=false;
    for(int i=2;i<=10000;i++)
    {
        if(a[i])
        {
            zhishu[++cur]=i;
            for(int j=i*2;j<=10000;j+=i)
            {
                a[j]=false;
            }
        }
    }
}
string c;
int num[10001];
int add[10001];
int main()
{
    int cur1=0,cur2=0;
    bool flag=1;
    cin>>c;
    shai();
    int num1=0;
    for(int i=0;i<c.length();i++)
    {
        if(c[i]>='0'&&c[i]<='9')
        {
            num1*=10;
            num1+=(c[i]-48);
        }
        if(c[i]==',')
        {
            if(flag)
            {
                num[++cur1]=num1;
                num1=0;
            }
            else
            {
                add[++cur2]=num1;
                num1=0;
            }
        }
        if(c[i]=='+')
        {
            if(flag)
            {
                num[++cur1]=num1;
                num1=0;
            }
            else
            {
                add[++cur2]=num1;
                num1=0;
            }
            flag=false;
        }
    }
    int basecur=0;
    int base;
    for(int i=cur1;i>=1;i--)
    {
        base=zhishu[++basecur];
        num[i]+=add[i];
        if(num[i]>=base)
        {
            if(i==1)
            {
                cout<<"1,";
                num[i]-=base;
                break;
            }
            num[i-1]++;
            num[i]-=base;
        }
    }
    for(int i=1;i<=cur1;i++)
    {
        cout<<num[i];
        if(i!=cur1)
        {
            cout<<",";
        }
    }
    return 0;
}
2022/11/21 11:48
加载中...