zoukankan      html  css  js  c++  java
  • hdu1014Uniform Generator

    1.使用暴力穷举法:注意条件判断

    代码如下:

    #include<stdio.h>
    #include<string.h>
    bool m[100001];
    int main()
    {
     int mod,step,seed,num;
     while(scanf("%d %d",&step,&mod)!=EOF)
     {
      memset(m,0,sizeof(m));seed=0;num = 0;
      while(!(m[seed%mod])){
       m[seed%mod]=1;seed=(seed+step)%mod;num++;
      }
      if(num==mod)
       printf("%10d%10d    Good Choice\n\n",step,mod);
      else
       printf("%10d%10d    Bad Choice\n\n",step,mod);

     }
    }

    15ms 104k

    2.在网上看得资料:

    简单证明:(不知正确与否,网上提交成功了)
    令 f(x) = seed(x) + step ;
    那么seed 的序列 就是 a=f(x) 的模MOD 加法群。
    因为题中要求这个加法群的大小 | <a> | = MOD。
    所以 a == 1 (mod MOD ).
    即( seed(x) + STEP ) == 1 (mod MOD).
    又因为seed(x) 必定含有0,
    所以 STEP == 1 (mod MOD ).
    即 STEP 和 MOD 互质

    所以可以编写代码如下:

    #include<stdio.h>
    int gcd(int n,int m)
    {
     if(m==0)
      return n;
     return gcd(m,n%m);
    }
    int main()
    {
     int step,mod;

     while(scanf("%d %d",&step,&mod)!=EOF)
     {
      if(gcd(step,mod)==1)
       printf("%10d%10d    Good Choice\n\n",step,mod);
      else
       printf("%10d%10d    Bad Choice\n\n",step,mod);

     }
    }

    0ms 4k

  • 相关阅读:
    ACM HDU 1176 免费馅饼(DP)
    PHP下载时中文文件名乱码的问题
    NYOJ 27
    NYOJ 148
    NYOJ 8
    NYOJ 138
    NYOJ 461
    POJ 1200
    STL排序算法
    NYOJ 523
  • 原文地址:https://www.cnblogs.com/pandy/p/1319045.html
Copyright © 2011-2022 走看看