[Code+#4] 组合数问题
题目描述
众所周知,小葱同学擅长计算,尤其擅长计算组合数,所以小葱给了你两个数 x x x 和 k k k,希望你把 x x x 分成恰好 k k k 个不同的组合数的和。所谓不同,即对于两个组合数 C ( n 1 , m 1 ) C(n_1,m_1) C(n1,m1) 和 C ( n 2 , m 2 ) C(n_2,m_2) C(n2,m2),如果 n 1 ≠ n 2 n_1\neq n_2 n1=n2 或者 m 1 ≠ m 2 m_1\neq m_2 m1=m2,我们就称这两个组合数是不同的。为了使得计算不过于复杂,你需要保证你给出的任何一个组合数 C ( n , m ) C(n,m) C(n,m) 满足 0 ≤ m ≤ n ≤ x 0\leq m\leq n\leq x 0≤m≤n≤x。数据保证一定有解。
输入格式
从标准输入读入数据。
第一行两个整数 x , k x,k x,k。
输出格式
输出到标准输出。
k k k 行,每行两个整数 n , m n,m n,m 代表一个组合数 C ( n , m ) C(n,m) C(n,m)。如果有多种可能的答案,任意输出一组即可。
样例 #1
样例输入 #1
6 2
样例输出 #1
3 1
3 2
提示
对于 20 % 20\% 20% 的数据, k = 1 k=1 k=1。
对于另外 20 % 20\% 20% 的数据, x ≤ 100 x\leq 100 x≤100。
对于另外 20 % 20\% 20% 的数据, k = 2 k=2 k=2。
对于 100 % 100\% 100% 的数据, 1 ≤ x ≤ 1 0 9 , 1 ≤ k ≤ 1 0 3 . 1\leq x\leq 10^9,1\leq k\leq 10^3. 1≤x≤109,1≤k≤103.
Credit: https://www.luogu.org/discuss/show/38908
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容