SRM 431 div2 1000pt(好题,数学题)

来源:互联网 发布:海军 知乎 编辑:程序博客网 时间:2024/05/01 14:19

题意:给定一个S和P,求最小的n满足:x1+x2+...+xn=S,x1*x2*....*xn=P,如果不存在这样的n,输出-1

eg. 5   100

return -1


100

1000000000

return 9

分析:看这一题完全没思路,硬着头皮去看官方题解。。pool me >_<

思路是①当n=1时,显然此时S必须等于P;②当n=2时,由x+y=S,所以y=S-x代入x*y=A,整理得到,x*x-Sx+A=0,对于一元二次方程,当S*S-4*A>=0时候存在解,即0<=A<=S*S/4,此时x=S/2,是否可以由此推断,当n>=2时候,0<=A<=(S/n)^n?题解也给出了相应的证明。这里略去。

因为当S<n的时候S/n<1,(S/n)^n<1,这时候没有可行解。

根据以上的思路,我们可以对于P,枚举2<=n<=S,判断是否存在P<=(S/n)^n,如果存在n即为所求

代码实现很简单~

 

官方题解:http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm431

原创粉丝点击