题解 P7303 【[COCI2018-2019#1] Nadan】
Griseo_nya
2021-02-05 08:38:02
题目要求 $n$ 个项目分配 $k$ 个库纳,而且数据保证有解,那么此时我们可以想到贪心的思路(况且还有 SPJ )。
因为只要每个项目至少 $1$ 库纳,并且不同,很容易可以想到可以从 $1$ 到 $n$ 循环,在小于 $n$ 时输出当前循环次数,等于 $n$ 时输出剩余的 $k$ 即可。
顺便提一下下面的题解中递归 main() 函数的方法在 C++20 中会报错!~~(可是CCF不是只开到C++98吗)~~
代码参上!
```cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
int k,n;
cin>>k>>n;
for(int i=1;i<=n;i++){
if(i==n)cout<<k<<endl; //等于 n 时输出剩余的 k
else{
k-=i; //减去当前花的钱
cout<<i<<endl; //输出当前花的钱
}
}
return 0;
}
```