AT_iroha2019_day3_c
liushuaishuai · · 题解
题目大意
传送门
思路
这题是一个数学题,我们可以把他想的简单一点。
- 把每个人分到的设为一个大数,这里设为
1000000005 。 - 前面
n-1 人分到的都是10000000005 的礼物。 - 最后一人分到的总和也是
10000000005 ,此时还剩m - n + 1 个礼物,那我们可以拿1 来凑数,也就是m - n 个1 和1000000005 - k + n + 1 。 - 输出
YES。 - 最后输出
1 \sim n-1 ,再输出k - n + 1 个n 。
代码
#include <bits/stdc++.h>
using namespace std;
int n, k, maxn = 1e9 + 5; //第一步,设数
int main(){
cin >> n >> k;
for (int i = 1; i <= n - 1; i++) cout << maxn << " ";
//第二步,输出n - 1个最大值
for (int i = 1; i <= k - n - 1; i++) cout << 1 << " ";
cout << maxn - k + n + 1 << endl;
//第三步,最后一人分到的
cout << "YES\n";
//第四步,都满足情况,输出YES
for (int i = 1; i <= n - 1; i++) cout << i << " ";
for (int i = 1; i <= k - n + 1; i++) cout << n << " ";
//第五步,输出顺序
return 0;
}