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)当然不是这么拼写的~ 唉英语考成那么渣,我还是要好好背背单词,还有语法也弱爆了。
当有那么一天,你相信你可以做到的时候,那你就真的能够做到!
路在脚下