UOJ #82. 【UR #7】水题生成器

题目链接

发现任意一个 \(\leq n!\) 的数 \(x\) 都可以表现为以下形式:

\[x=a_1\times \frac{n!}{1!}+a_2\times \frac{n!}{2!}+\cdots + a_n\times \frac{n!}{n!} \]

\(a_i\leq i\)。直接输出 \(a_i\times \frac{n!}{i!}\) 就行了。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;
LL n, m;

void init()
{
	scanf("%lld %lld", &n, &m);
}

void work()
{
	LL fac = 1;
	for (int i = 1; i <= n; i++)
		fac=fac * i;
	for (int i = 1; i <= n; i++)
	{
		fac /= i;
		LL k = m / fac * fac;
		if (k)
			printf("%lld\n", k);
		m -= k;
	}
}

int main()
{
	init();
	work();
	return 0;
}
posted @ 2020-09-17 13:19  With_penguin  阅读(103)  评论(0编辑  收藏  举报