hdu 1370
地址:http://acm.hdu.edu.cn/showproblem.php?pid=1370
题意:有3个循环周期,周期天数分别为23、28、33。对于某一年,已知某年这3个周期的某一峰值分别是当年的第p、e、i天,问从第d天开始到最近一个满足3个周期都达到峰值的日期还有多少天。
mark:据说是剩余定理。数据比较小,直接打表可过。比较蛋疼的是wa了很多次,因为算减法以后忘记取模了。。。
代码:
# include <stdio.h>
int tab[40][40][40] ;
int _0(int num)
{
if (num <= 0) return num + 21252 ;
return num ;
}
int main ()
{
int p,e,i,d,T, nCase ;
for (i = 0 ; i < 21252 ; i++)
tab[i%23][i%28][i%33] = i ;
scanf ("%d", &T) ;
while (T--)
{
nCase = 1 ;
while (1)
{
scanf ("%d%d%d%d", &p, &e, &i, &d) ;
if (p==-1&&e==-1&&i==-1&&d==-1) break ;
// printf ("%d\n", tab[p%23][e%28][i%33]-d) ;
printf ("Case %d: "
"the next triple peak occurs in %d days.\n",
nCase++, _0(tab[p%23][e%28][i%33]-d)) ;
}
if (T) putchar ('\n') ;
}
return 0 ;
}