hdoj:2048

#include <iostream>

using namespace std;
long long a[];
long long b[];
int main()
{
int C;
a[] = ;
a[] = ;
b[] = ;
b[] = ;
for (long i = ; i <= ; i++)
{
a[i] = (i - )*(a[i - ] + a[i - ]);
b[i] = i*b[i - ];
}
while (cin >> C)
{
while (C--)
{
int n;
cin >> n;
printf("%.2lf", 100.0*a[n] / b[n]);
cout << "%" << endl;
}
}
}

1--n

第一个位置是2--n,n-1种

第二个位置是1,剩余数排列 a(n-2)

第二个位置不是1,剩余数排列a(n-1)

a(n) = (n-1)*(a(n-2) + a(n-1))

http://acm.hdu.edu.cn/showproblem.php?pid=2048

上一篇:Qt应用程序图标


下一篇:android 多线程Thread,Runnable,Handler,AsyncTask