XVII Open Cup named after E.V. Pankratiev. Grand Prix of Tatarstan

From EOJ Wiki
Jump to: navigation, search

Problem A

Solved by Xiejiadong. 0:43 (+1)

题意:定义一个函数 $f(1)=0,f(x)=1(x\in prime),f(x)=f(a\cdot b)=f(a)\cdot b+f(b)\cdot a(x=a\cdot b)$ ,给出 $k$ ,求所有的 $f(n)=k\cdot n$ 。

题解:可以发现当 $k=1$ 的时候,满足要求的数是 $2^2,3^3,5^5,7^7,11^{11},\cdots $ 。

继续打表发现 $k=2$ 的时候是 $(2^2)^2,(2^2)\cdot (3^3),(3^3)^2\cdots $ 。

于是猜测就是从 $k=1$ 的里面任意挑 $k$ 个数组合得到。

直接 dfs 然后对符合要求的数排序即可。

Problem B

Unsolved.

Problem C

Unsolved.

Problem D

Solved by Kilo_5723. 0:46 (+)

Problem E

Solved by Weaver_zhu. 0:48 (+)

Problem F

Upsolved by Weaver_zhu. (-5)

Problem G

Unsolved.

Problem H

Solved by Kilo_5723. 4:34 (+)

Problem I

Unsolved. (-3)

Problem J

Solved by Kilo_5723. 1:50 (+4)

Problem K

Unsolved.

Problem L

Solved by Xiejiadong. 1:50 (+3)

题意:选定一个没有 `+` 的位置放置一个 `+` ,求能攻击掉多少个 `+` 。

题解:显然,`+` 的攻击是可逆的。那么我们对于其中一个 `+` 被激活以后可以攻击到的所有 `+` ,一定是这所有相关联的 `+` 其中一个被激活,即可攻击到所有的。

于是按照这个原理,我们可以把 `+` 按照联通块的形式划分。

然后对于每一个非 `+` ,最多可以放四个方向攻击,判断那个非 `+` 可以攻击最多的 `+` 即可。