首页 > ACM题库 > HDU-杭电 > HDU 3189-Just Do It[解题报告]HOJ
2014
03-06

HDU 3189-Just Do It[解题报告]HOJ

Just Do It

问题描述 :

Now we define a function F(x), which means the factors of x. In particular, F(1) = 1,since 1 only has 1 factor 1, F(9) = 3, since 9 has 3 factors 1, 3, 9. Now give you an integer k, please find out the minimum number x that makes F(x) = k.

输入:

The first line contains an integer t means the number of test cases.
The follows t lines, each line contains an integer k. (0 < k <= 100).

输出:

The first line contains an integer t means the number of test cases.
The follows t lines, each line contains an integer k. (0 < k <= 100).

样例输入:

4
4
2
5
92

样例输出:

6
2
16
-1


Problem : 3189 ( Just Do It )      Judge Status : Accepted
RunId : 1898109     Language : G++     Author : lmyouya
Code Render Status : Rendered By HDOJ G++ Code Rander Version 0.01 Beta

#include<iostream>
#include<map>
#include<cmath>
using namespace std;
int main() {
	int i, j, k, temp;
	map<int, int> a;
	a[0] = 0;
	for (i = 1; i <= 1000; i++) {
		k = int(sqrt(i));
		if (k * k == i)
			temp = 1;
		else {
			temp = 0;
			k++;
		}
		for (j = 1; j < k; j++)
			if (i % j == 0)
				temp += 2;
		if (a[temp] == 0)
			a[temp] = i;
	}
	cin >> i;
	while (i--) {
		cin >> j;
		if (a[j] == 0)
			cout << -1 << endl;
		else
			cout << a[j] << endl;
	}
	return 0;
}

// stl stl 用了stl AC 了,算是真的AC吗? 是为了 AC量还是质量?

Just Do It 参考:http://hi.baidu.com/szsodshjzdbbltq/item/edb7229936da811b934f41ee


  1. 第二种想法,我想来好久,为啥需要一个newhead,发现是把最后一个节点一直返回到嘴上面这层函数。厉害,这道题之前没样子想过。

  2. 一开始就规定不相邻节点颜色相同,可能得不到最优解。我想个类似的算法,也不确定是否总能得到最优解:先着一个点,随机挑一个相邻点,着第二色,继续随机选一个点,但必须至少有一个边和已着点相邻,着上不同色,当然尽量不增加新色,直到完成。我还找不到反例验证他的错误。。希望LZ也帮想想, 有想法欢迎来邮件。谢谢

  3. 第一句可以忽略不计了吧。从第二句开始分析,说明这个花色下的所有牌都会在其它里面出现,那么还剩下♠️和♦️。第三句,可以排除2和7,因为在两种花色里有。现在是第四句,因为♠️还剩下多个,只有是♦️B才能知道答案。

  4. 这个方法是错的,不信你试试:
    20 5
    1 A:9
    1 A:9
    1 A:9
    1 A:6
    1 A:4
    正确答案应该是19,这个答案是18