poj1006

来源:互联网 发布:8051 单片机完全手册 编辑:程序博客网 时间:2024/06/05 00:44

刚开始做oj,之前又不知道怎么求剩余问题(根本想不到好伐,恕我愚昧),脑子里想到的方法貌似复杂度很高。。。于是百度了一下,用的是剩余定理。。。,一副小学奥数题的样子,上了大学反而蠢到家了。

题目大意就是

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天,输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和智力高峰出现的时间,从给定时间起,下一次三个高峰同天的时间(距离给定时间的天数)。
思路:
x%23==p,x%28==e,x%33==i,求x
23*28*a%33==1---------------a = 2;  23 * 28 * 2 = 1288。
23*33*b%28==1---------------b = 19;23 * 33 * 19 = 14421;
28*33*c%23==1---------------c= 6; 33 * 28 * 6 = 5544;
x=5544p+14421e+1288i
x-d即为所求
#include<stdio.h>int main()  {      int p, e, i, d, s, j = 0;            while( scanf("%d%d%d%d", &p, &e, &i, &d) != EOF )      {                  j++;          if(p == -1 && e == -1 && i == -1 && d == -1)          {              break;                  }            s = ( 5544 * p + 14421 * e + 1288 * i - d ) % 21252;                    if( s <= 0 )             {              s += 21252;                  }                    printf("Case %d: the next triple peak occurs in %d days.\n", j, s );      }      return 0; }

0 0
原创粉丝点击