为什么只对了第四个点捏?!
查看原帖
为什么只对了第四个点捏?!
88750
KiloCranes楼主2024/1/6 15:11
#include<bits/stdc++.h>

using namespace std;

const int N=55;

int a,n,m,x,xi;
int n_a[N],n_x[N];
int s_a[N],s_x[N];

int main(){
	cin>>a>>n>>m>>x;
	if(n==1)
		cout<<a;
	else if (n==2){
		if(x==1)
			cout<<a;
		else
			cout<<m;
	}else if(n==3){
		if(x==1||x==2)
			cout<<a;
		else
			cout<<m;
	}else{
		n_a[1]=1;
		n_a[2]=0;
		for(int i=3;i<=n;i++)
			n_a[i]=n_a[i-1]+n_a[i-2];
		s_a[1]=1;
		s_a[2]=1;
		for(int i=3;i<n;i++)
			s_a[i]=n_a[i]-n_a[i-1]+s_a[i-1];
		s_a[n]=s_a[n-1]+n_a[n];
		n_x[1]=0;
		n_x[2]=1;
		for(int i=3;i<=n;i++)
			n_x[i]=n_x[i-1]+n_x[i-2];
		s_x[1]=0;
		s_x[2]=0;
		for(int i=3;i<=n;i++)
			s_x[i]=n_x[i]-n_x[i-1]+s_x[i-1];
		xi=(m-n_a[n-1]*a)/n_x[n-1];
		if(x<n)
			cout<<s_a[x]*a+s_x[x]*xi; 
		else
			cout<<m;
	}
	return 0;
}
2024/1/6 15:11
加载中...