⑨要写信
1697 ⑨要写信
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。
由于以下三点原因……
- 琪露诺的符卡 冰符“Icicle Fall”-Easy的弹幕有够蠢的,只要站在她的正前方就没任何弹幕会碰到你;
- ZUN在《红魔乡》中介绍她时已经说她有点笨笨的了;
- 在ZUN放出《东方花映冢》的介绍图时,在图中把琪露诺放在了⑨的位置上,并以“⑨笨蛋”简单带过,从此“⑨”及“笨蛋”就成为她的别名了……
所以琪露诺便得到了“笨蛋”的别称。
某日,琪露诺又2了……
她写了N封信要装到N个信封里面,却全都装错了……现在想知道有多少种装错的可能性。
输入描述 Input Description
信和信封的数量N。
输出描述 Output Description
装错的可能性的数量。
样例输入 Sample Input
样例输入1
2
样例输入2
4
样例输出 Sample Output
样例输出1
1
样例输出2
9
数据范围及提示 Data Size & Hint
1≤N≤100
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int f[101][1000000]; int len(int a) { int i=100000-1; while(f[a][i]==0&&i>0) i--; return i; } int main() { int n,i,j,l,lnow; scanf("%d",&n); f[2][0]=1; for(i=3; i<=n; i++) { l=len(i-1); for(j=0; j<=l; j++) f[i][j]=f[i-1][j]+f[i-2][j]; for(j=0; j<=l; j++) if(f[i][j]>9) { f[i][j+1]+=f[i][j]/10; f[i][j]%=10; } lnow=len(i); for(j=0; j<=lnow; j++) f[i][j]*=i-1; for(j=0; j<=lnow; j++) if(f[i][j]>9) { f[i][j+1]+=f[i][j]/10; f[i][j]%=10; } } l=len(n); for(i=l; i>=0; i--) printf("%d",f[n][i]); cout<<endl; return 0; }