Max Factor-求几个数中有最大质因数的数

来源:互联网 发布:手机上中文编程的软件 编辑:程序博客网 时间:2024/06/04 17:57

->题目传送门<-

题意见标题

刚开始以为一组数据,WA一次,然后改了一下,超时了大哭,然后又改了一下,超内存了。。。不说了,看别人做这题就没这么多事,所以就写个博客记念一下微笑

超时代码:

#include #include #include #include #include using namespace std;const int MAX_N=20010;vector is_prime;void judge(){    is_prime = vector(MAX_N + 1, true);    is_prime[0] = is_prime[1] = false;    for (int i = 2; i <= MAX_N; ++i)    {        if (is_prime[i])        {            for (int j = i * 2; j <= MAX_N; j += i)            {                is_prime[j] = false;            }        }    }}int solve(int n){    judge();    int ret=-1;    for(int i=2; i<=sqrt(n+0.5); i++)if(n%i==0)        {            int t=n/i;            if(is_prime[i]) ret=i;            if(t>i&&is_prime[t]) ret=t;        }    return ret;}int main (){    int T;    while(cin>>T)    {        int n[T];        int maxnum=0,maxn=0;        while(T--)        {            cin>>n[T];            if(solve(n[T])>maxn)            {                maxn=solve(n[T]);                maxnum=T;            }        }        cout<
(弱弱的求波帮助)

然后看了一下网上的,发现了一个写的既简单又内啥的,下次做题之前要多动脑,原本以为题目简单咋作都行,作着作着,就不想做了/捂脸

#include#includeusing namespace std;const int maxn=19999+16;int prime[maxn];void fun(){    for(int i=0; i>n)    {        int endx=-1,endy=-1;        for(int i=0; i>x;            if(prime[x]>endx)            {                endx=prime[x];                endy=x;            }        }        cout<
蓝瘦。。。

原创粉丝点击