现在给你一个分数,你能否将它写成连分数。
首行一个正整数,代表测试数据的组数
接下来行每行给出两个正整数
保证输入的分数都可以写成有穷连分数的形式
每组测试数据输出一行,格式见样例
3 103 24 21 73 4 2
103/24 = 4+1/{3+1/{2+1/3}}
21/73 = 0+1/{3+1/{2+1/10}}
4/2 = 2#include<bits/stdc++.h>
using namespace std;
void solve(){
long long p,q;
cin>>p>>q;
cout<<p<<"/"<<q<<" = ";
if(p%q==0){
cout<<p/q<<"\n";
return;
}
vector<long long> a;
while(q){
a.push_back(p/q);
long long r=p%q;
p=q;
q=r;
}
cout<<a[0];
for(int i=1;i<a.size()-1;i++){
cout<<"+1/{";
cout<<a[i];
}
cout<<"+1/"<<a[a.size()-1];
for(int i=1;i<a.size()-1;i++) cout<<"}";
cout<<"\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
cin>>T;
while(T--) solve();
} import sys
for line in sys.stdin:
data = line.split()
break
import sys
for line in sys.stdin:
data = line.split()
a = int(data[0])
b = int(data[1])
def para_in_list(a,b):
res = []
if a % b == 0:
res.append(a // b)
return res
while a != 1&nbs***bsp;b != 1:
if b == 0:
break
res.append(a // b)
a, b = b, (a%b)
return res
para = para_in_list(a,b)
temp = ''
if len(para) == 0:
temp = ''
else:
for i in range(-1,-len(para)-1,-1):
if -i == 1:
temp = str(para[i])
if -i == 2:
temp = str(para[i]) + '+1/' + temp
if -i >= 3:
temp = str(para[i]) + '+1/{'+ temp + '}'
print(f'{int(data[0])}/{int(data[1])} = {temp}')