玄关求助,急
查看原帖
玄关求助,急
992971
akksc04楼主2024/6/21 20:50
#include<bits/stdc++.h>
using namespace std;
long long a,b,depth,d[100],ans[100];
bool flag=0;
void dfs(long long a,long long b,long long step){
	if(step+1 == depth)
		if(b%a == 0&&b/a>d[step]){
			d[step+1]=b/a;
			flag=1;
			if(ans[step+1] == 0 || d[step+1]<=ans[step+1]){
				for(int i=1;i <= step+1;i++){
					ans[i]=d[i];
				}	
			}
			return;
			
		}
	long long start= (b%a == 0?b/a:b/a+1);
	start=max(d[step]+1,start);
	long long end= ceil(b*(depth-step)/a);
	for(long long i=start;i <= end; i++){
		d[step+1]=i;
		long long aa=a*i-b;
		long long bb=b*i;
		dfs(aa,bb,step+1);
	}
	
}
int main(){
	cin>>a>>b;
	for(depth=3;depth<=3;depth++){
		dfs(a,b,0);
		if(flag){
			break;
		}
	}
	for(int i=1;i <= depth;i++){
		cout << ans[i] << " ";
	}
	return 0;
	
}


2024/6/21 20:50
加载中...