地址:http://acm.hit.edu.cn/judge/show.php?Proid=1006&Contestid=0
思路:最簡單的方法就是用visted[60]來存儲分針數是否重復過,如果重復了說明后面的結果在不斷循環而不會到達0。然而更快捷的方法是利用60的因子分解,60=2*2*3*5,每次time = ((d + 1) * time) % 60,如果可以,那么最多2次就可以到達0,否則永遠到達不了。
代碼如下:

#include <stdio.h>

int main()
{
    
int d, tmp;
    
int num;

    
while(scanf("%d%d"&tmp, &d) == 2 && (tmp || d))
    
{
        
if(tmp == 0)
        
{
            printf(
"0\n");
            
continue;
        }

        
if(d == 0)
        
{
            printf(
"Impossible\n");
            
continue;
        }


        
for(num = 1; num <= 2; num++)
        
{
            tmp 
= ((d + 1* tmp) % 60;
            
if(tmp == 0)
                
break;
        }


        
if(tmp == 0)
            printf(
"%d\n", num);
        
else
            printf(
"Impossible\n");
    }


    
return 0;
}