轉眼到了2008年的6月9日,盼望已久的高考結束了。咱們踏上了向西的旅程(原本是想寫西去之路,但是考慮不太穩當)。可可西里,多麼誘人的名詞,充滿了奇幻的色彩和天然的淳樸。從可可西里徒步走回家的決定是在1年半前定下的,而如今,終於能夠實現那個鉤過手指的預約。咱們的可可西里。。。html
在回家的路上,瘋子和蚊子看到了許多可愛的藏羚羊,無心之中瘋子和蚊子發現藏羚羊的居住地的分佈也是有規律的,雖然瘋子和蚊子早就據說藏羚羊是一種羣體性很強又有超高IQ的動物,可是仍是爲它們的居住地分佈規律感到驚歎。通過細心的觀察,瘋子和蚊子發現,若是假設一個藏羚羊羣體有N只羊,就能夠把它們的領地當作一個N*N的方陣,在這個方陣上第I列的第I 行都有一個聖地,它們不會居住在聖地,同時每行每列只能居住一隻羚羊。因而他們很快算出一個有N只羊的藏羚羊羣體的居住地分佈方法數。ios
這是聖地的一種排列方法code
一個整數N 表明藏羚羊的個數htm
一個整數sum表明方法數blog
$\texttt{input#1}$
4ci
$\texttt{output#1}$
9get
對於30%的數據,n<=10
對於所有數據 n<=1000input
錯排。高精度(毒瘤)。string
#include<iostream> #include<cstring> #include<string> #include<cstdio> #include<algorithm> int n; std::string f[1001]={"0","0","1","2"}; inline std::string jia(std::string a,std::string b) { std::string ans="",cheng1="",cheng2=""; int len=a.length(); for(int i=len-1;i>=0;--i) cheng1+=a[i]; len=b.length(); for(int i=len-1;i>=0;--i) cheng2+=b[i]; int len1=cheng1.length(),len2=cheng2.length(); int sum=0; char jinwei=0,c1,c2; while(sum<len1||sum<len2) { c1=cheng1[sum]-48; c2=cheng2[sum]-48; if(c1<0) c1=0; if(c2<0) c2=0; if(sum>=len1) c1=0; if(sum>=len2) c2=0; c1+=c2; c1+=jinwei; jinwei=0; if(c1>9) { jinwei=c1/10; c1=c1%10; } ans+=c1+'0'; sum++; } while(jinwei!=0) { char qwq=jinwei/10; jinwei=jinwei%10; ans+=jinwei+'0'; jinwei=qwq; } std::string anss=""; len=ans.length(); for(int i=len-1;i>=0;--i) anss+=ans[i]; return anss; } inline std::string cheng(int n,std::string a) { std::string ans="",cheng1="",cheng2=""; while(n) { cheng1+=n%10+'0'; n/=10; } int len=a.length(); for(int i=len-1;i>=0;--i) cheng2+=a[i]; int len1=cheng1.length(),len2=cheng2.length(); std::string qwq="0",qaq="",emm=""; char jinwei=0; for(int i=0;i<len1;++i) { qaq="",emm=""; int x=i; while(x) { --x; qaq+='0'; } for(int j=0;j<len2;++j) { char c2=cheng2[j]-'0',c1=cheng1[i]-'0'; c1*=c2; c1+=jinwei; jinwei=0; if(c1>9) { jinwei=c1/10; c1%=10; } qaq+=c1+'0'; } while(jinwei!=0) { char wasd=jinwei/10; jinwei%=10; qaq+=jinwei+'0'; jinwei=wasd; } int len=qaq.length(); for(int j=len-1;j>=0;--j) emm+=qaq[j]; qwq=jia(qwq,emm); } return qwq; } inline std::string jiaqwq(std::string qaq) { int len=qaq.length(); std::string ans="",qwq=""; char jinwei=1; for(int i=len-1;i>=0;--i) { qaq[i]-='0'; qaq[i]+=jinwei; jinwei=0; ans+=qaq[i]%10+'0'; if(qaq[i]>9) jinwei=qaq[i]/10; } len=ans.length(); for(int i=len-1;i>=0;--i) qwq+=ans[i]; return qwq; } int main() { std::cin>>n; for(int i=4;i<=n;++i) { std::string qwq=jia(f[i-1],f[i-2]); f[i]=cheng(i-1,qwq); } std::cout<<f[n]; return 0; }
上接【CSP-S膜你考】那23個路口it