zoj 1476 Weird Clock

    技术2025-09-05  16

    水题。

     

    给你初始时间s,d。则算一次时间为( s + d*s )%60.问你最少算多少次可以到达0.

     

    直接循环就好。算一次s在数组中标记下,如果s第二次遇到, 说明有环了,永远达不到了。。

     

    #include <cstdio> #include <cstdlib> #include <iostream> #include <string.h> #include <queue> #include <limits.h> using namespace std; int Clock[60]; int main() { int s,d,flag,cnt; long long M; while( ~scanf("%d%d",&s,&d) && d ) { memset(Clock,0,sizeof(Clock)); Clock[s] = 1; flag = cnt = 0; while( s != 0 ) { s = (s*d+s)%60; cnt++; if( Clock[s] == 1 ) { flag = 1; break; } Clock[s] = 1; } if( flag == 1 ) printf("Impossible/n"); else printf("%d/n",cnt); } return 0; }  

     

     

    最新回复(0)