暑假集训(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 }