P4369题解
作为一个以数竞为主的OIer,怎能不来写一发与组合数有关的题解?(尽管Flokirie的组合数学一塌糊涂)
看题:
题目大意
将x写成k个组合数的和,要求:在组合数
题目分析
我们先列出杨辉三角的前几行:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
写到这里我们发现:其实任何一个数都是某个组合数:
而且1还有多种表示形式:
那我们就可以把x写成下面的形式了:
容易验证这样构造的
代码
什么?分析得这么明白你还想要代码?
#include <bits/stdc++.h>
using namespace std;
int main(){
int x,k;
scanf("%d %d",&x,&k);
for (int i=1;i<k;i++){
printf("%d 0\n",i);
}
printf("%d 1\n",x-k+1);
return 0;
}