POJ1006

题目链接

抽象题目:

  给定p,i,e以及对应的除数pp,ii,ee,求关于x的一元同余线性方程

这道题目可以直接模拟,即暴力枚举所有的x直到出现最小的x为止

代码如下

 1 #include<cstdio>
 2 using namespace std;
 3 const int pp=23,ee=28,ii=33;
 4 int p,e,i,d;
 5 int main()
 6 {
 7     int casetime=1;
 8     while(scanf("%d%d%d%d",&p,&e,&i,&d)==4&&p!=-1){
 9         p=p%pp; e=e%ee; i=i%ii;
10         for(int k=1;k<=21252;k++){
11             int date=d+k;
12             if( (((date-p)%pp)==0)&&(((date-e)%ee)==0)&&(((date-i)%ii)==0) ){
13                 printf("Case %d: the next triple peak occurs in %d days.\n",casetime++,k);
14                 break;
15             }
16         }
17     }
18     return 0;
19 }

 求解上述问题的时候出现了点小状况,因为变量i被使用了,但是在循环的时候我却依然用i作循环变量就出现了不可控错误。

当然这道题目一看到的时候就觉得应该可以用中国剩余定理解 作为 一元模线性方程组 加上 除数是那么的互质 肯定是可以这样做的。

不过现在还不会中国剩余定理,上网查了一些资料还是不太清楚。我打算先学点别的,等到把数论的基础打好了之后再入手CRT(Chinese Remaining Theory)当然不是这么拼写的~ 唉英语考成那么渣,我还是要好好背背单词,还有语法也弱爆了。

posted @ 2015-04-24 23:13  JimmyLin^_^  阅读(85)  评论(0编辑  收藏  举报