定和的n个正整数 求最大积
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定和的n个正整数 求最大积相关的知识,希望对你有一定的参考价值。
n个正整数的和为定值m,求该n个数的最大积,需要给出证明。
例如:m=10,n=3, 分为 3 3 4 ,最大积为3*3*4=36。
关键是如何证明。
在线等。。
由均值不等式,x1x2x3...xn<=((x1+x2+x3+x4+...+xn)/n)^n=(m/n)^n
等号成立当且仅当x1=x2=x3=...=xn=m/n
但是,要求都是整数,上面的条件不一定成立。
但是x1,x2,x3...xn越接近乘积越大,证明如下:
我们考虑这样的一组 x1,x2,x3,...,xn:其中有xi,xj满足xi-xj>=2;
令xi--->xi-1,xj--->xj+1
那么乘积x1x2...xixj...xn < x1x2...(xi-1)(xj+1)...xn(比较一下xixj和(xi-1)(xj+1)就知道)
也就说,经过一次这样的操作之后,数组的和不变,乘积增大。
那么我们可以预见,有限步之后,达到最大乘积时,x1x2x3...xn各整数两两之差为0或1。
简而言之,当x1,x2,x3,...,xn只由k和k+1两种数字组成时乘积最大。 参考技术A a=[m/n],b=m/n-[m/n], []表示取整
则n个数为nb个a+1 n(1-b)个a时积最大
首先nb(a+1)+n(1-b)a=nb+na=m符合要求
若保持和不变 变换其中两个数x,y为x-i y+i(x<=y)
则有3种情况
1、x=y=a 显然a^2>(a+i)(a-i)
2、x=y=a+1 也有(a+1)^2>(a+1+i)(a+1-i)
3、x=a,y=a+1 容易证明a(a+1)>(a-i)(a+1+i)
故当N个数为nb个a+1 n(1-b)个a时 无论怎么改变这N个数 只要总和不变
积就会减少
故有当n个数为nb个a+1 n(1-b)个a时积最大 参考技术B 我估计应该是取抛物线的最高点,不好意思,时间久了,公式都忘了。希望能简单的帮上你。
JAVA求四个正整数,逆序数1234。这些求余怎么求啊!
用求余数的方法,求一个四位正整数的逆序数的Java程序如下:
import java.util.Scanner;public class AA
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个四位正整数:");
int n=sc.nextInt();
if(n<1000 || n>9999)
System.out.println("您输入的不是一个四位正整数!");
else
int a,b,c,d,result;
a=n/1000;//取四位正整数的千位数
b=n/100%10;//取四位正整数的百位数
c=n/10%10;//取四位正整数的十位数
d=n%10;////取四位正整数的个位数
result=d*1000+c*100+b*10+a;
System.out.println("四位正整数"+n+"的逆序数为:"+result);
运行结果:
请输入一个四位正整数:1234
四位正整数1234的逆序数为:4321
能解释一下什么意思吗?
追答就是用求余数的方法,求一个四位正整数的逆序数,比如: 1234是一个四位数,它的逆序数就是4321
要求逆序数,必须把这个四位数的各个位上的数取出来,方法就是用这个数除以它的位权再用10取余数,比如:取四位正整数的十位数字 c=n/10%10;然后按逆序重新生成一个数例如:result=d*1000+c*100+b*10+a;就是这个四位正整数例如:1234的逆序数例如:4321了.
四位数各位上的数除?
追答四位数除以它的位的权重,再用10取余数,得到这个四位数各个位上的数字.
所谓位的权重,就是这一位所代表的大小,比如:十位代表10,百位代表100.
不会求余数,求详细步骤
参考技术B 百度一下你就知道咯 参考技术C 百度搜一下以上是关于定和的n个正整数 求最大积的主要内容,如果未能解决你的问题,请参考以下文章