zoukankan      html  css  js  c++  java
  • poj 2635 The Embarrassed Cryptographer

    恩,这题做的郁闷,其实就是一道素数筛选加上大数拆分的题,但做的我万分无奈,提交几次都是RE,但把几个关键数组开大了,还是不行,看看网上的解题报告思路没错啊,最后的最后终于找出来了,原来是筛选素数的数组开小了,==!以后一定要细心啊!!

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define maxx 1000010//这里开小了~~
    int p[80000];
    int a[maxx+10];
    int num;
    int s[100];
    
    void init()
    {
        int i,j;
        memset(a,0,sizeof(a));
        for(i=2;i*i<=maxx;i++)
        {
            if(!a[i])
            {
                for(j=i<<1;j<=maxx;j+=i)
                a[j]=1;
            }
        }
        j=0;
        for(i=2;i<=maxx;i++)
        if(!a[i])
        p[j++]=i;
    }
    
    int sub(int x)
    {
        int i;
        __int64 tem=0;
        for(i=num;i>=0;i--)
        tem=(tem * 10000000 + s[i])%x;
        return (int)tem;
    }
    
    int main()
    {
        int k,i,j;
        char str[120];
    
        init();
        while(scanf("%s%d",str,&k) ,k)
        {
            int len = strlen(str);
            //if(k==0 && len==1 &&str[0] == '0')
            //break;
            num=0;
            memset(s,0,sizeof(s));
            for(i=len-1,j = 1;i >= 0;i--,j *= 10)
            {
                if(j==10000000)
                {
                    j=1;num++;
                }
                s[num]+=(str[i]-'0')*j;
            }
            int flag=0;
            for(i=0;p[i]<k;i++)
            if(sub(p[i])==0)
            {
                flag=1;break;
            }
            if(flag)
            printf("BAD %d\n",p[i]);
            else
            printf("GOOD\n");
        }
        return 0;
    }
  • 相关阅读:
    C# 自定义文件图标 双击启动 (修改注册表)
    C/S打包 客户端/windows程序 InstallShield
    WPF 依赖属性
    WPF 自定义Expander
    WPF DevExpress ChartControl用法
    WPF 水平进度条
    WPF 自定义CheckBox
    WPF 自定义ListBox
    WPF 绕圈进度条(一)
    1.为什么要用泛型
  • 原文地址:https://www.cnblogs.com/misty1/p/2471719.html
Copyright © 2011-2022 走看看