首页 > ACM题库 > HDU-杭电 > HDU 1393 Weird Clock-枚举-[解题报告] C++
2013
12-09

HDU 1393 Weird Clock-枚举-[解题报告] C++

Weird Clock

问题描述 :

A weird clock marked from 0 to 59 has only a minute hand. It won’t move until a special coin is thrown into its box. There are different kinds of coins as your options. However once you make your choice, you cannot use any other kind. There are infinite number of coins of each kind, each marked with a number d ( 1 <= d <= 1000 ), meaning that this coin will make the minute hand move d times clockwise the current time. For example, if the current time is 45, and d = 2. Then the minute hand will move clockwise 90 minutes and will be pointing to 15.

Now you are given the initial time s ( 1 <= s <= 59 ) and the coin’s type d. Write a program to find the minimum number of d-coins needed to turn the minute hand back to 0.

输入:

There are several tests. Each test occupies a line containing two positive integers s and d.

The input is finished by a line containing 0 0.

输出:

For each test print in a single line the minimum number of coins needed. If it is impossible to turn the hand back to 0, output "Impossible".

样例输入:

30 1
0 0

样例输出:

1

#include<iostream>
using namespace std;
int main()
{
	int s,d,i,cnt,a[100];
	while(scanf("%d%d",&s,&d)!=EOF&&(s!=0||d!=0))
	{
		for(i=0;i<60;i++)a[i]=0;
		cnt=0;
		while(s!=0&&a[s]==0)
		{
			a[s]=1;
			s=(s+s*d)%60;
			cnt++;

		}
		if(s!=0)printf("Impossible\n");
		else printf("%d\n",cnt);

	}
	return 0;
}

解题报告转自:http://blog.csdn.net/zcy20121105/article/details/7855218


  1. 我没看懂题目
    2
    5 6 -1 5 4 -7
    7 0 6 -1 1 -6 7 -5
    我觉得第一个应该是5 6 -1 5 4 输出是19 5 4
    第二个是7 0 6 -1 1 -6 7输出是14 7 7
    不知道题目例子是怎么得出来的

  2. 约瑟夫也用说这么长……很成熟的一个问题了,分治的方法解起来o(n)就可以了,有兴趣可以看看具体数学的第一章,关于约瑟夫问题推导出了一系列的结论,很漂亮