#include <iostream> #include <cstdio> using namespace std; int gcd(int a,int b){ //cout<<a<<" "<<b<<endl; if(!b) return a; return gcd(b,a%b); } int main() { freopen("i.txt","r",stdin); int s,m; while(cin>>s>>m){ printf("%10d%10d",s,m); //cout<<s<<" "<<m<<endl; //cout<<gcd(s,m)<<endl; if(gcd(s,m)==1) cout<<" Good Choice"<<endl; else cout<<" Bad Choice"<<endl; cout<<endl; } return 0; }
1.完全剩余系:一个模m完全剩余系是一个整数的集合,使得每个整数恰和此集合中的一个元素模m同余.
2.定理: 若r1,r2……rm是一个模的完全剩余系,且正整数a使得(a,m)=1,即a,m互素,则对于任何整数b,
a*r1+b,a*r2+b,……,a*rn+b,都是模m的完全剩余系.
证明:
假设:存在j!=k有a*rj+b≡a*rk+b(mod m),
则a*rj≡a*rk(mod m).
因为(a,m)=1,所以rj≡rk(mod m).
推出j==k,与j!=k矛盾.
3.关于这个题,补充一下:其实题目中的那个递推公式的解就是1.当n==1是,s1=STEP%MOD,2.其他sn=(n*STEP)%MOD