1 条题解
-
0
Guest
-
1
先搓一个高精度加减法(迫真)
string sub(string str1,string str2) { string str; int tmp=str1.length()-str2.length(); int cf=0; for(int i=str2.length()-1;i>=0;i--) { if(str1[tmp+i]<str2[i]+cf) { str=char(str1[tmp+i]-str2[i]-cf+'0'+10)+str; cf=1; } else { str=char(str1[tmp+i]-str2[i]-cf+'0')+str; cf=0; } } for(int i=tmp-1;i>=0;i--) { if(str1[i]-cf>='0') { str=char(str1[i]-cf)+str; cf=0; } else { str=char(str1[i]-cf+10)+str; cf=1; } } str.erase(0,str.find_first_not_of('0')); return str; } string add(string str1,string str2) { string str; int len1=str1.length(); int len2=str2.length(); if(len1<len2) { for(int i=1;i<=len2-len1;i++) str1="0"+str1; } else { for(int i=1;i<=len1-len2;i++) str2="0"+str2; } len1=str1.length(); int cf=0; int temp; for(int i=len1-1;i>=0;i--) { temp=str1[i]-'0'+str2[i]-'0'+cf; cf=temp/10; temp%=10; str=char(temp+'0')+str; } if(cf!=0) str=char(cf+'0')+str; return str; }
然后搓一个递归,就是斐波那契数列的主干
string fb(string a) { if(a=="1") return "1"; if(a=="2") return "2"; else return add(fb(sub(a,"1")),fb(sub(a,"2"))); }
然后先关掉鲨臂的sync,再用主函数
int main() { string a; fucksync(); cin>>a; cout<<fb(sub(a,"1"))<<"\n"; }
信息
- ID
- 662
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 11
- 已通过
- 10
- 上传者