第一段代码a,但找不到与第二段wa第四个点代码的区别
第一段:
#include<iostream>
using namespace std;
int f[200],a[200],n,m;
int main()
{
int x;
cin>>a[1]>>n>>m>>x;
f[1]=a[1];f[2]=a[1];f[3]=f[2]+a[1];
int l=0,r=1<<20;
while(l<=r)
{
int mid=r+l>>1;
a[2]=mid;
for(int i=3;i<=n-1;i++)
a[i]=a[i-1]+a[i-2];
for(int i=3;i<=n-1;i++)
f[i]=f[i-1]+a[i-2];
if(f[n-1]>=m) r=mid-1;
else l=mid+1;
}
a[2]=l;
for(int i=3;i<=n-1;i++)
a[i]=a[i-1]+a[i-2];
for(int i=3;i<=n-1;i++)
f[i]=f[i-1]+a[i-2];
cout<<f[x]<<endl;
}
第二段
#include<iostream>
using namespace std;
int f[200],a[200],n,m;
int pk(int x)
{
a[2]=x;
for(int i=3;i<=n-1;i++)
a[i]=a[i-1]+a[i-2];
for(int i=3;i<=n-1;i++)
f[i]=f[i-1]+a[i-2];
return f[n-1];
}
int main()
{
int x;
cin>>a[1]>>n>>m>>x;
f[1]=a[1];f[2]=a[1];f[3]=f[2]+a[1];
int l=1,r=1<<20;
while(l<=r)
{
int mid=r+l>>1;
if(pk(mid)>=m) r=mid-1;
else l=mid+1;
}
a[2]=l;
for(int i=3;i<=n-1;i++)
a[i]=a[i-1]+a[i-2];
for(int i=3;i<=x;i++)
f[x]=f[x-1]+a[x-2];
cout<<f[x]<<endl;
}