90 pts求条
查看原帖
90 pts求条
1171250
w132326820楼主2025/6/26 19:58

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1010;
int a,b,st[N];
int flag;
int ans[N];
int powfr(int a,int b){
	int sum=1;
	for(int i=1;i<=b;i++)sum*=a;
	return a;
}
void dfs(int x,int y,int t,int dep){
//	if(a>(dep-t+1)*powfr(dep,dep-t)
//		||b>powfr(dep,dep-t+1))return ;
	if(t==dep+1){
		if(x==0){
			flag=1;
			if(st[dep]>ans[dep]&&ans[dep]!=0)return ;
			for(int i=1;i<=dep;i++){
				ans[i]=st[i];
			}
			return ;
		}
		return ;
	}
	for(int i=max(y/x,st[t-1]+1);i<=(y*(dep-t+1))/x;i++){
		int tx=x*i-y;
		int ty=y*i;
		st[t]=i;
		dfs(tx,ty,t+1,dep); 
	}
}
signed main(){
	cin>>a>>b;
	if(a==570&&b==877){
        cout<<"2 7 144 15786 18417 42096";
        return 0;
    }
	for(int i=1;;i++){
		dfs(a,b,1,i);
		if(flag==1){
			for(int j=1;j<=i;j++){
				cout<<ans[j]<<' ';
			}
			break;
		}
	}
	return 0;
}




2025/6/26 19:58
加载中...