码迷,mamicode.com
首页 > 其他好文 > 详细

#COGS#1155. 最大乘积#啊,我怎么可能会写题解#可能充满误导和错误的解题过程。#

时间:2016-08-25 23:18:25      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

//写在前面:手抖,MinGW里删除汉字要两次。外加,参考了别人的写法,啊,好机智啊。

题面:一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。 

现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。

输入是一个正整数n在3到10000之间,拆分之后累乘起来蛮大的要高精,然后long long只能过三个点,看那一大堆带﹣号的输出很吓人。

恩本来没仔细看题目,以为就是拆分然后乘积最大,于是就拆成很多很多小质数……2,3之类的==,最后跟乘方那样很大。。

然后发现是拆分成不同的数。啊,不同的,这……

一脸懵逼。

然后找规律,找规律

设f(x)是拆分后的最大乘积。

3=1+2 f(3)=2;

4=2+2 f(4)=4;

5=2+3 f(5)=6;

6=2+4 f(6)=8;

7=3+4 f(7)=12;

8=3+5 f(8)=15;

9=2+3+4 f(9)=24;

10=2+3+5 f(10)=30;

11=2+4+5 f(11)=40;

……

啊没规律啊……

看看分类,贪心,高精和数学。

啊贪心!

还是不知道怎么写。。。

翻一下题解和别人的代码好了。

看不懂。。。真的,到现在我还没看懂那个代码。。

好,题解,看题解。

只好顺着这个思路走,先证明,5以上的数x分解之后总有一种情况使得积大于x

首先设这个数是x,设0<a<=2/x;

那么就是,a和x-a

s=a*(x-a)

要证明s-x>0

则s-x=a*(x-a)-x=ax-a^2-x,提取公因数x,x(a-1)-a^2;

因为刚刚设0<a<=2/x;

所以x>=2a;

所以2a(a-1)-a^2=a2^2-a^2-2a=a^2-2a,之前说了是5以上的数,所以a^2-2a真的>0;

……

不想写了,明天再写……

#COGS#1155. 最大乘积#啊,我怎么可能会写题解#可能充满误导和错误的解题过程。#

标签:

原文地址:http://www.cnblogs.com/BraFloGinAtSky/p/5808449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!