新手光能
#include<bits/stdc++.h>
using namespace std;
string Fib[101];
int x,y,n;
int a[10005],b[10005],c[10005];
string Plus(string x,string y,int x1,int y1){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=x.size(),b[0]=y.size();
int jww=0;
for(int i=1;i<=a[0];i++){
a[i]+=x[a[0]-i]-'0';
a[i]*=x1;
a[i]+=jww;
jww=a[i]/10;
a[i]%=10;
}
if(jww!=0){
a[++a[0]]+=jww;
}
for(int i=1;i<=b[0];i++){
b[i]+=y[b[0]-i]-'0';
b[i]*=y1;
jww=b[i]/10;
b[i]%=10;
}
if(jww!=0){
b[++b[0]]+=jww;
}
c[0]=max(a[0],b[0]);
int jw=0;
for(int i=1;i<=c[0];i++){
c[i]=a[i]+b[i]+jw;
jw=c[i]/10;
c[i]%=10;
}
if(jw==1)
c[++c[0]]++;
string ans="";
for(int i=c[0];i>=1;i--){
ans=ans+(char)(c[i]+'0');
}
return ans;
}
int main(){
cin>>x>>y>>n;
Fib[1]="1";
Fib[2]="1";
for(int i=3;i<=n;i++){
Fib[i]=Plus(Fib[i-1],Fib[i-2],x,y);
}
cout<<Fib[n];
return 0;
}
汤启恩在2020-10-11 14:17:48追加了内容
样例都没过
汤启恩在2020-10-11 20:16:48追加了内容
ding
汤启恩在2020-10-11 20:29:58追加了内容
ding
汤启恩在2020-10-11 20:48:08追加了内容
ding
高级光能
分两步算,贪心不足蛇吞象
int jw=0;
for(int i=1;i<=a[0];i++){
for(int j=1;j<=b[0];j++){
c[i+j-1]+=a[i]*b[j];
}
}
for(int i=1;i<=c[0];i++){
c[i]+=jw;
jw=c[i]/10;
c[i]%=10;
}
if(jw){
c[0]++;
c[c[0]]=jw;
}
string tmp="";
for(int i=c[0];i>=1;i--){
tmp+=c[i]+'0';
}
乘法如上
int jw=0;
for(int i=1;i<=c[0];i++){
c[i]=jw+a[i]+b[i];
jw=c[i]/10;
c[i]%=10;
}
if(jw){
c[0]++;
c[c[0]]=jw;
}
string tmp="";
for(int i=c[0];i>=1;i--){
tmp+=c[i]+'0';
}
加法如上