1 条题解
-
0
哈哈 你贞洁吗?
#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
信息
- ID
- 494
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 14
- 已通过
- 9
- 上传者