⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1319 prime cuts.cpp

📁 威士忌的HDU题解.大概有260多题的源码。对于学习非常有好处。
💻 CPP
字号:
/*
1319 Prime Cuts
Time Limit : 1000 ms  Memory Limit : 32768 K  Output Limit : 256 K

GUN C++
*/
#include <iostream>
using namespace std;

const int Max=1000;

int filterPrime(int savenum[],int n)
{
    int ca,temp,now;
    int num[Max]={0};
    for(ca=2;ca<=n;ca++)
    {
        if(num[ca]==0)
        {
            temp=ca+ca;
            while(temp<=n)
            {   num[temp]=1;temp+=ca;}
        }
    }
    
    for(ca=1,now=0;ca<=n;ca++)
        if(num[ca]==0)
        {   savenum[now]=ca;now++;}

    return now-1;
}

int Print(int s,int e,int prime[])
{
    int ca;
    for(ca=s;ca<e;ca++)
    {
        cout<<" "<<prime[ca]<<flush;
    }
    cout<<endl<<endl;
    return 0;
}

int main()
{
    int c,n,ca,size,nceil;
    int prime[200]={0};
    size=filterPrime(prime,Max);
    prime[size+1]=-1;//设定上限
    while(cin>>n>>c)
    {
        cout<<n<<" "<<c<<":";
        nceil=0;
        while(prime[nceil]<=n && prime[nceil]>0)//注意当数据为1000时没法比较比他大的了
        {   nceil++;}
        
        if(nceil%2==0)
        {
            //ca=nceil/2-c;   outlen=2*c;
            if(2*c>=nceil)
                Print(0,nceil,prime);
            else
                Print(nceil/2-c,nceil/2-c+2*c,prime);
        }
        else
        {
            //ca=nceil/2-c+1;   outlen=2*c-1;
            if(2*c-1>=nceil)
                Print(0,nceil,prime);
            else
                Print(nceil/2-c+1,nceil/2-c+1+2*c-1,prime);
        }

    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -