1 条题解

  • 0
    @ 2023-4-15 15:02:18

    哈哈 你贞洁吗?

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int flag=1,ans[1145],aa[1145];
    int dep=1;
    void dfs(int a,int b,int n){
    	if(n==dep){
    		if(a==0&&aa[dep-1]<ans[dep-1]){
    			flag=0;
    			for(int i=0;i<dep;i++) ans[i]=aa[i];
    		}
    		return;
    	}
    	int l=ceil(b*1.0/a),r=min(l*(dep-n),ans[n]);
    	l=max(l,aa[n-1]+1);
    	for(int i=l;i<=r;i++){
    		int ta=a*i-b;
    		int tb=b*i;
    		int tt=__gcd(ta,tb);
    		ta/=tt,tb/=tt;
    		if(tb>1e7) continue;
    		aa[n]=i;
    		dfs(ta,tb,n+1);
    	}
    }
    signed main(){
    	int a,b;
    	cin>>a>>b;
    	memset(ans,127,sizeof(ans));
    	while(flag){
    		dep++;
    		dfs(a,b,0);
    	}
    	for(int i=0;i<dep;i++) cout<<ans[i]<<' ';
    	return 0;
    }
    
    • 1

    「一本通 1.3 练习 1」埃及分数

    信息

    ID
    494
    时间
    1000ms
    内存
    512MiB
    难度
    8
    标签
    递交数
    14
    已通过
    9
    上传者