标签:div its occurs func scanf for each where nat
InputEach line of input will contain a pair of integers for STEP and MOD in that order (1 <= STEP, MOD <= 100000).
OutputFor each line of input, your program should print the STEP value right- justified in columns 1 through 10, the MOD value right-justified in columns 11 through 20 and either "Good Choice" or "Bad Choice" left-justified starting in column 25. The "Good Choice" message should be printed when the selection of STEP and MOD will generate all the numbers between and including 0 and MOD-1 when MOD numbers are generated. Otherwise, your program should print the message "Bad Choice". After each output test set, your program should print exactly one blank line.
Sample Input
3 5 15 20 63923 99999
Sample Output
3 5 Good Choice 15 20 Bad Choice 63923 99999 Good Choice
思路 : 水了两晚上的题,差点淹死.......这个题有两种做法,首先就是普通做法,其次就是求两个数最大公约数是不是一;
第一种方法:
#include<bits/stdc++.h> using namespace std; int main() { int s,mod,i; while(~scanf("%d%d",&s,&mod)) { int a[100001] = {0},seed=0; while(!a[seed]){ a[seed] = 1; seed = (seed+s)%mod; } for(i=0;i<mod;i++){ if(a[i] == 0){ printf("%10d%10d Bad Choice\n\n",s,mod);break; } } if(i==mod){ printf("%10d%10d Good Choice\n\n",s,mod); } } return 0; }
第二种方法
#include <bits/stdc++.h> using namespace std; int main() { int step,mod1,t; while(scanf("%d%d",&step,&mod1)==2) { printf("%10d%10d",step,mod1); while(mod1) { t = step%mod1; step = mod1; mod1 = t; } printf(" %s\n\n",step == 1? "Good Choice":"Bad Choice"); } return 0; }
欢迎批评指正。
标签:div its occurs func scanf for each where nat
原文地址:https://www.cnblogs.com/clb123/p/10135016.html