地址: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;
}