啊啊啊啊啊啊!太忙了,昨天忘记(且没时间)打比赛了!!!
好烦
T1
我们可以通过x和y的差值得到x和y的高度
因为“城堡高度分别为1,(1+2),(1+2+3),...,(1+2+...+999)1,(1+2),(1+2+3),...,(1+2+...+999)个方块”、x和y相邻,所以x原本的高度为1+2+3......+(y-x-1)。
我们通过输入的被覆盖后的x的高度和x原本的高度的差值,就可以知道雪块的高度了。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T2
我们有三种采矿方法:
1.采取1个单位的石头。
2.6个单位或者6的次方个单位的石头,例如6^3=216个单位的石头)。
3.采取9个单位或者9的次方个单位的石头(例如9^2=81个单位的石头)。
由此可知,每次采的石头越多越好,那我们就可以每次都采能采的最多的石头(贪心)
但是有可能不是这样子的!
例:n=108
如果按照贪心的想法,ans=4(81,9,9,9)
但其实ans=3(36,36,36)
所以最优方案应该运用dfs(每次尝试采最多能采6的次方个单位的石头或9的次方个单位的石头
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
T3
first,简而言之,如果x%y==0,则y为x的正除数(y>0)
N!=1x2x3......xN
我们可以将1,2,3......,N质数分解,N!就等于(1)x(2)x(3)x(2x2)x(5)......x(质数分解后的N),即N!的所有正除数都是由这一坨些和1组成的
我们还可以将这些用数组统计每一个质数出现的次数
*最后,我们求的的东西就成了有x个质数,每个质数有sum[i]个,求可以相乘组成多少个不同的数的答案+1(因为1不是质数,但也是N!的正除数)
方法:
公式:
ans=1;
for(int i=2;i<n+1;i++){
if(num[i]) ans*=sum[i]+1;//if(num[i]):判断i是否为质数
}
第二次写题解,如有错误,请谅解。