第四个点wa,求助
查看原帖
第四个点wa,求助
1190741
Violet_Evergardon楼主2024/8/9 10:03

第一段代码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;
}
2024/8/9 10:03
加载中...