| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2869 人关注过本帖
标题:唉,杭电ACM一道很坑爹的题目,素因子什么的,大侠快进来看卡,帮助帮助,我 ...
只看楼主 加入收藏
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
我擦,为什么我的AC不了,杨大哥,求指点

程序代码:
#include <stdio.h>
#include <math.h>

int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
              37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
              79, 83, 89, 97, 101, 103, 107, 109, 113,
              127, 131, 137, 139, 149};

int isprime(int n)
{
    int i, j;
    if(n < 2) return 0;
    if (n == 2) return n;

    j = (int)sqrt((float)n);
    for(i = 0; prime[i]<=j; i++)
    if(n%prime[i] == 0) return 0;
    return n;
}

int main()
{
    int Max=0, N, i=0, j, s, tmp, t=1, B, r, x;
    scanf("%d",&N);
    for (t=0; t<N; t++)
    {
        scanf("%d", &B);
        t==0?r=B:1;
        j = (int)sqrt((float)B);
        for (i=2; i<=j; i++)
        {
            if (B%i==0)
            {
                s = isprime(B/i);
                x = isprime(i);
                tmp = (x>s?x:s);
                if (tmp>Max) Max = tmp, r=B;
            }
        }
    }
    printf("%d\n",r);
    return 0;
}
2012-08-25 00:17
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
是题目描述的问题。我也因此wa了一次。它是多组测试实例的。

重剑无锋,大巧不工
2012-08-25 00:29
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
依然AC不了,何解啊,我擦,难道算法本身有问题哇?

程序代码:
#include <stdio.h>
#include <math.h>

int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
              37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
              79, 83, 89, 97, 101, 103, 107, 109, 113,
              127, 131, 137, 139, 149};

int isprime(int n)
{
    int i, j;
    if(n < 2) return 0;
    if (n == 2) return n;

    j = (int)sqrt((float)n);
    for(i = 0; prime[i]<=j; i++)
    if(n%prime[i] == 0) return 0;
    return n;
}

int main()
{
    int Max, N, i=0, j, s, tmp, t=1, B, r, x;
    while (scanf("%d",&N)!=EOF)
    {
        for (t=0,Max=0; t<N; t++)
        {
            scanf("%d", &B);
            t==0?r=B:1;
            j = (int)sqrt((float)B);
            for (i=2; i<=j; i++)
            {
                if (B%i==0)
                {
                    s = isprime(B/i);
                    x = isprime(i);
                    tmp = (x>s?x:s);
                    if (tmp>Max) Max = tmp, r=B;
                }
            }
        }
        printf("%d\n",r);
    }
    return 0;
}
2012-08-25 00:40
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
把1当成质数

重剑无锋,大巧不工
2012-08-25 09:37
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
以下是引用beyondyf在2012-8-25 09:37:48的发言:

把1当成质数

有道理,问题应该就出在这
2012-08-25 09:42
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
0ms AC
程序代码:
#include <stdio.h>
#include <math.h>

int prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73,
79, 83, 89, 97, 101, 103, 107, 109, 113,
127, 131, 137, 139, 149};

int isprime(int n)
{
    int i, j;
    if(n <= 2) return n;

    j = (int)sqrt((float)n);
    for(i = 0; prime[i]<=j; i++)
    if(n%prime[i] == 0) return 0;
    return n;
}

int main()
{
    int Max, N, i=0, j, s, tmp, t=1, B, r, x;
    while (scanf("%d",&N)!=EOF)
    {
        for (t=0,Max=0; t<N; t++)
        {
            scanf("%d", &B);
            t==0?r=B:1;
            j = (int)sqrt((float)B);
            for (i=1; i<=j; i++)
            {
                if (B%i==0)
                {
                    s = isprime(B/i);
                    x = isprime(i);
                    tmp = (x>s?x:s);
                    if (tmp>Max) Max = tmp, r=B;
                }
            }
        }
        printf("%d\n",r);
    }
    return 0;
}
2012-08-25 11:41
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
还可以更快

重剑无锋,大巧不工
2012-08-25 12:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:3 
最近杭电是不是有比赛  很多模块都关闭了

梅尚程荀
马谭杨奚







                                                       
2012-08-25 12:34
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
今天下午有比赛的,杨大哥在么?找你商量点事
2012-08-25 15:50
菜鸟0
Rank: 2
等 级:论坛游民
帖 子:37
专家分:91
注 册:2012-6-20
收藏
得分:0 
回复 10楼 beyondyf
是不是2477乘以2啊。。。
2012-08-25 16:01
快速回复:唉,杭电ACM一道很坑爹的题目,素因子什么的,大侠快进来看卡,帮助帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051435 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved