乘积最大3
题目描述
请你找出 个和为 的正整数,他们的乘积要尽可能的大。
输出字典序最小的一种方案。
输入格式
一行,两个正整数
输出格式
个和为 的,乘积尽可能的大的正整数。
样例 #1
样例输入 #1
6 3
样例输出 #1
2 2 2
提示
对于100%的数据,。数据保证 。
思路解析
先写下我的思路:用N/M,将得出的结果存入长度为M的数组arr,arr中每个元素的值都为N/M。遍历数组求和sum,将sum与N进行比较:如果sum与N相等,那么arr内M个元素相乘,即NM 乘积最大;如果sum不等于N,那么将arr[0]++,再次就和判断,若sum与N还不相等,将arr[1]++,直到sum与N相等。此时arr中元素的值即为最终结果。
对于上边的解释,画图举个例子:(N = 8 , M = 3)
完整代码
import java.util.Scanner;
public class P1887 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[] arr = new int[m];
for (int i = 0; i < m; i++) {
arr[i] = n / m;
}
int sum = 0;
for (int i = 0; i < m; i++) {
sum += arr[i];
}
int k = m - 1;
while (sum < n) {
arr[k]++;
sum++;
k--;
}
for (int i = 0; i < m; i++) {
System.out.print(arr[i] + " ");
}
}
}