HDU 1014 Uniform Generator GCD水题

来源:互联网 发布:java中获取input标签 编辑:程序博客网 时间:2024/06/06 03:07

    题目很长,说是有一个计算随机数的公式函数,然后让你输入step和mod,问你输入的这两个数能否让随机数函数中出现0到mod-1中的所有数,如果可以,输出Good Choice,否则输出Bad。看似很复杂,但是读明白了就会发现,就是一道水题= =step和mod之间是%的关系,函数是递加的,所以只要step和mod的最大公约数是1,就是合适的选择。因为如果不是1的话,就会有一些情况无论循环几次都得不到。

    然后,一个GCD判断一下,输出就可以了。还要注意下输出格式是每个数占10位,用%10d输出,最后再换个行,over~

    以下代码:


#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int gcd(int m,int n){    int temp;    if(m<n)    {        temp=m;        m=n;        n=temp;    }    if (m%n==0)    {        return n;    }    else    {        return gcd(n,m%n);    }}int main(){    int step,mod;    int a;    while(scanf("%d%d",&step,&mod)!=EOF)    {        a=gcd(step,mod);        if(a==1)            printf("%10d%10d    Good Choice\n\n",step,mod);        else            printf("%10d%10d    Bad Choice\n\n",step,mod);    }    return 0;}


0 0