题解 P7303 【[COCI2018-2019#1] Nadan】

Griseo_nya

2021-02-05 08:38:02

Solution

题目要求 $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; } ```