uoj82. UR #7水题生成器
Posted gmh77
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uoj82. UR #7水题生成器相关的知识,希望对你有一定的参考价值。
题目描述
n<=20
题解
有♂趣的题目
n个数,上限为n!,可以想到每次用第i个数来进行i!级别的约束
简单思考一下,发现每次可以把m变到n!*1/i!以内
那么每次减掉的数就是n!*(1i-1)/i!,即(1i-1)*Π(i+1)~n,显然是n!的约数
code
#include <bits/stdc++.h>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define ll long long
//#define file
using namespace std;
int n,i,j,k,l;
ll m,s;
int main()
{
#ifdef file
freopen("uoj82.in","r",stdin);
#endif
scanf("%d",&n);
scanf("%lld",&m);
s=1;fo(i,1,n) s*=i;
i=2;
while (m)
{
if (m>=s) printf("%lld
",(m/s)*s);
m%=s,s/=i,++i;
}
fclose(stdin);
fclose(stdout);
return 0;
}
以上是关于uoj82. UR #7水题生成器的主要内容,如果未能解决你的问题,请参考以下文章