聪聪是一个善良可爱、睿智聪慧的好孩子。聪聪喜欢看书,这一天她在看一本书时看到
了这样一个问题:给你一个正整数n,你要将它分成若干个自然数Ai的和的形式,并且使得
这若干个自然数Ai的乘积尽量大,并输出最大乘积。比如n=5的情况,最优的方案是5=2+3,
答案为6。这么简单的问题聪聪当然会做了,她想考考你,你能不能比她先给出问题的答案
呢?
【输入】
输入文件名为reading.in 共1行,包含1个正整数n。
【输出】
输出文件reading.out 共1行,包含1个整数,表示最大乘积。
【输入输出样例】
reading.in/reading.out
7
12
【数据范围】
对于30%的数据,1≤n≤10。
对于60%的数据,1≤n≤100。
对于100%的数据,1≤n≤10000。
小学奥数学过吗?这题的思路是:每次从n中拆出3,然后m*3,直到n<=4为止。当n<=4时,m再最后乘一次n。不知这个思路学过没?
为什么n<=4就结束?其实多手写几组数据就知道:有的时候m最后乘一个4的时候,结果会最大,而最后一次不可能乘以5!
这是代码,有问题评论。
#include<iostream> using namespace std; int n,m=1; int main() { cin>>n; if(n<=4) m=n; else { while(n>4) { n-=3; m*=3; } if(n!=0) m*=n; } cout<<m; system("pause"); return 0; }
这个代码只能得60分,因为当n<=10000的时候,结果会有好几百位,所以要用高精度。
时间: 2024-10-17 13:53:32