代码改变世界

暑假集训(4)第四弹 -----排列,计数(hdu1465)

2016-08-01 21:18  HUAS_周林微  阅读(139)  评论(0编辑  收藏  举报

题意概括:嗯,纵使你数次帮助小A脱离困境,但上一次,小A终于还是失败了。那数年的奔波与心血,抵不过轻轻一指,便彻底

湮灭,多年的友谊终归走向末路。这一切重击把小A彻底击溃!

不为什么,你到底还是要继续帮助小A,让他走出这难言的挫折。不过怎样帮助他呢?苦苦思索之际,你不小心看到某美分集中营

上的“心灵鸡汤”,决定用这些四溢着“美味”的鸡汤帮助小A,第一个鸡汤是举例子,一个人给他的每一个网友寄信,但是都寄错了,

你认为寄错的次数绝对比完全正确的1种庞大的多,所以你需要算出这些数字来安慰小A。

 

问题分析:利用错排公式可以得到答案,注意数据量比较大,可以用__int64 型数据,输出格式控制用%I64d。

 

 1 #include "cstdio"
 2 __int64 a[20]={0,1};
 3 int main()
 4 {
 5     int n;
 6     for (int i=2;i<=19;i++)
 7     {
 8         a[i] = (a[i-1] + a[i-2]) * i;
 9     }
10     while (scanf("%d",&n) != EOF)
11     {
12         printf ("%I64d\n",a[n-1]);
13     }
14     return 0;
15 }
View Code