1 条题解
-
0
本题是贪心。首先从选择比a/b小的最大的1/n,然后让a/b减去1/n得到新的a/b。重复这个过程知道a=1停止。 注:其实字典序最小也是长度最小的答案。
#include <bits/stdc++.h> using namespace std; typedef long long ll; void slove (ll a,ll b) { ll g=gcd(a,b); a/=g; b/=g; while (a) { ll t=(b-1)/a+1; cout<<t<<" "; ll ta=a*t-b,tb=b*t;//a/b-1/t=(at-b)/bt g=gcd(ta,tb); a=ta/g; b=tb/g; } cout<<endl; } int main () { ll q; cin>>q; for (int i=0;i<q;i++) { ll a,b; cin>>a>>b; slove(a,b); } return 0; }
- 1
信息
- ID
- 261
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 47
- 已通过
- 17
- 上传者