2013zhoujy @ 2023-07-26 21:20:39
我发现规律是斐波那契数列,于是做了一个代码:
#include <bits/stdc++.h>
using namespace std;
unsigned long long k=1,t=1,s;
int n;
int main()
{
cin>>n;
if(n<2){
cout<<1;
return 0;
}
for(int i=2;i<=n;i++){
s=k+t;
k=t;
t=s;
}
cout<<s;
return 0;
}
结果提交上去: 1:AC 2:AC 3:AC 4:AC 5:AC 6:AC 7:WA 8:WA 9:WA 10:WA 九九俺! https://www.luogu.com.cn/record/117486981
by ryf_loser @ 2023-07-26 21:23:01
@zhoujiayou 看一下数据范围,要用高精度
by Starry_dream @ 2023-07-26 21:24:10
第一级台阶一种走法,第二级台阶两种走法,而第三级台阶是一二两级之和,以此类推
by Max6700 @ 2023-07-26 21:32:06
同意楼上的楼上,要用高精度加法
void jia(int m)
{
for(int i=1;i<=len;i++)
a[m][i]=a[m-1][i]+a[m-2][i];
for(int i=1;i<=len;i++)
if(a[m][i]>=10)
{
a[m][i+1]+=a[m][i]/10;
a[m][i]=a[m][i]%10;
if(a[m][len+1])
len++;
}
}
不正规的高精度
by 2013zhoujy @ 2023-07-28 20:36:47
@hjinyb 我就是这样想的啦
by Starry_dream @ 2023-07-29 10:47:35
高精度加法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
cin>>a>>b;
int len=a.size(),sz1[600]={0},sz2[600]={0},sz3[600]={0};//len可变化
for(int i=0;i<len;i++)
{
sz1[len-1-i]=a[i]-'0';/*sz1的最后一位=a的第0位,相当于倒序。
减'0'一定要记得!*/
}
len=b.size();
for(int i=0;i<len;i++)
{
sz2[len-1-i]=b[i]-'0';//sz2的最后一位=b的第0位,相当于倒序
}
len=max(a.size(),b.size());
for(int i=0;i<len;i++)
{
sz3[i]=sz3[i]+sz1[i]+sz2[i];//累加
if(sz3[i]>=10)//进位
{
sz3[i+1]++;
sz3[i]-=10;
}
sz3[i]%=10;
}
if(sz3[len]>0)//为避免如400+700只输出三位,背下来!!
{
len++;
}
for(int i=len-1;i>=0;i--)
{
cout<<sz3[i];
}
return 0;
}
by wangqing111 @ 2023-07-31 21:05:23
高精度的标签被你吃了?? 好吃吗??