如何打印给定i和j的数字数组,以使i的所有元素之和等于j?

时间:2019-07-07 10:52:58

标签: c++ algorithm

给出数字ij。 打印长度为i的数组,以使数组中所有元素的总和等于j

输入:

  i = 5 ;
  j = 27;

输出:

  6
  6
  5
  5
  5

喜欢:

a[0] = 1 + 1 + 1 + 1 + 1 + 1
a[1] = 1 + 1 + 1 + 1 + 1 + 1
a[2] = 1 + 1 + 1 + 1 + 1
a[3] = 1 + 1 + 1 + 1 + 1
a[4] = 1 + 1 + 1 + 1 + 1

我的代码:-

int N, K;
cin >> N >> K;
int arr[N]{ 0 };
while (K > 0)
{
    for (int i{ 0 }; i < N; i++)
    {
        int k = 0;
        k++;
        arr[i] = k;
    }
    K--;
}

1 个答案:

答案 0 :(得分:1)

您可以将j除以i。您可以打印ij / i,但是总和太小。 ji * (j / i)之间的区别是您必须打印(j / i) + 1的时间。

#include <iostream>

int main() {
    int i = 5, j = 27;
    int s = j / i;
    int k = j - s * i;
    bool first = true;
    for (int z = 0; z < k; ++z) {
        if (!first) std::cout << ' ';
        else first = false;
        std::cout << s + 1;
    }
    for (int z = k; z < i; ++z) {
        if (!first) std::cout << ' ';
        else first = false;
        std::cout << s;
    }
    return 0;
}