[洛谷 4157][SCOI2006]整数划分

题目链接

https://www.luogu.org/problem/P4157

题解

小清新找规律数学题?

我们先从比较小的整数开始找规律:

  • \(4=2+2\)
  • \(5=3+2\)
  • \(6=3+3\)
  • \(7=3+2+2\)
  • \(8=3+3+2\)
  • \(\ldots\)

我们发现对于任意一个大于等于 \(5\) 的整数,把它拆分成若干个 \(3\) 和 \(2\) 的和,且 \(3\) 的个数最多时乘积最大。

from math import *
n=int(input())
ans=1
while n>4 :
    n=n-3
    ans=ans*3
if n==4 :
    ans=ans*4
elif n==3 :
    ans=ans*3
elif n==2:
    ans=ans*2
x=int(log(ans)/log(10))+1
print(x)
if x<=100 :
    print(ans)
else :
    while x>100 :
        ans=ans//10
        x=x-1
    print(ans)

发表评论

电子邮件地址不会被公开。 必填项已用*标注