HDU 1014 Uniform Generator GCD水题

    xiaoxiao2026-08-28  0

        题目很长,说是有一个计算随机数的公式函数,然后让你输入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; }

    转载请注明原文地址: https://ju.6miu.com/read-1311642.html
    最新回复(0)