[题] 年会抽奖 #错排问题 #递推

题目:年会抽奖

题解

参考:刷题笔记-错排问题总结

代码

#include
using namespace std;
const int N = 20;
long long int n; 
long long int f[N], A[N];
int main() {
	f[1] = 0;
	f[2] = 1;
	A[1] = 1;
	A[2] = 2;
	for(int i = 3; i <= N; i ++){
		f[i] = (i - 1) * (f[i - 1] + f[i - 2]);
		A[i] = A[i - 1] * i; 
	} 
    while (cin >> n) { // 注意 while 处理多个 case
		printf("%.2lf%%\n", (double)f[n] * 100 / A[n]);
    }
//	for(int i = 1; i <= N; i ++) 
//		printf("%lld %lld\n", f[i], A[i]);
	return 0;
}
// 64 位输出请用 printf("%lld")	

你可能感兴趣的:(c++,算法,递推,错排问题)