题解 P1249 【最大乘积】
已注销LA4#LJP! · · 题解
解题思路
其实下面几位都讲得差不多了,不过高精度这种东西还是可以用python水一波的。 简单介绍数学知识。大概就是
让相乘的数的个数尽可能多
所以就可以贪心了。各个数不一样,所以就从2开始加 令tmp=2+3+4+5+6+7+8+...
为什么不选1 :(废话1对乘积没有贡献)
加到第一次大于n为止,然后把(tmp-n)这个数从数列中去掉,OK 剩下就是把这个数 嗯~ o( ̄▽ ̄)o 乘起来。高精度再见QAQ 下面给一下python代码,是不是比C++段很多呢(废话!没有高精度)
n=input()
a=[1 for i in range(1,10004)]
ans=0
out=1
i=2
p=1
while(ans<=n):
ans=ans+i
if p<=10000:
a[p]=i
p+=1
i+=1
k=ans-n
for j in range(1,p):
if a[j]!=k:
print a[j],
out*=a[j]
print "\n",out