51nod 1079 中国剩余定理
2017-03-29 22:14
375 查看
原理不太懂,先攒着,这题我暴力解的
例7:一个班学生分组做游戏,如果每组三人就多两人,每组五人就多三人,每组七人就多四人,问这个班有多少学生?
题目可以看成,除3余2,除5余3,除7余4。没有同余的情况,用的方法是“逐步约束法”,就是从“除7余4的数”中找出符合“除5余3的数”,就是再7上一直加7,直到所得的数除5余3。得出数为18,下面只要在18上一直加7和5得最小公倍数35,直到满足“除3余2”
4+7=11
11+7=18
18+35=53
例7:一个班学生分组做游戏,如果每组三人就多两人,每组五人就多三人,每组七人就多四人,问这个班有多少学生?
题目可以看成,除3余2,除5余3,除7余4。没有同余的情况,用的方法是“逐步约束法”,就是从“除7余4的数”中找出符合“除5余3的数”,就是再7上一直加7,直到所得的数除5余3。得出数为18,下面只要在18上一直加7和5得最小公倍数35,直到满足“除3余2”
4+7=11
11+7=18
18+35=53
//@auther zhou //@Number 201408070203 //@start time: //@finish time: /*@此处注意: */ /* 测试数据 */ #include<iostream> #include<cstring> #include<vector> #include<cmath> #include<algorithm> using namespace std; struct A{ int p,m; }; bool cmp(A a,A b){ if(a.p>b.p) return 1; return 0; } vector<A> x; int main(){ int num; cin>>num; A temp; for(int i=0;i<num;i++){ cin>>temp.p>>temp.m; x.push_back(temp); } sort(x.begin(),x.end(),cmp); // for(int i=0;i<num;i++){ // cout<<x[i].p<<" "<<x[i].m<<endl; // } int t; int okay=0; for(int j=0; ;j++){ t=j*x[0].p+x[0].m; okay=0; for(int i=1;i<num;i++){ if(t%x[i].p==x[i].m) okay++; } if(okay==num-1){ cout<<t; return 0; } } return 0; }
相关文章推荐
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51Nod 1079:中国剩余定理
- 51nod--1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- [51NOD - 1079] 中国剩余定理
- 51nod - -1079 中国剩余定理
- 51Nod-1079-中国剩余定理
- 51nod-【1079 中国剩余定理】
- 51Nod 1079中国剩余定理(孙子定理)
- 51nod-1079 中国剩余定理
- 51nod-1079中国剩余定理
- 51nod 1079 中国剩余定理
- 51NOD - 1079 中国剩余定理
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理 (模板)
- 51nod 1079 中国剩余定理
- 51nod 1079 中国剩余定理