测试样例和我的思路解题之后结果不一样,但是自己觉得是应该逻辑是对的,所以就试了下提交一直有个用例过不了,后来发现问题是int类型写成了doublel类型,其他的没有问题
#include<iostream> using namespace std; string str; int a,b; int q,r; void fun(){ a=0; int i=0; while(str[i]>='0'&&str[i]<='9'){ a=a*10+(str[i]-'0'); i++; } i++; b=0; while(str[i]>='0'&&str[i]<='9'){ b=b*10+(str[i]-'0'); i++; } } void gcd(int n1,int n2){ if(n1<n2) swap(n1,n2); while(n1%n2){ int tmp=n1%n2; n1=n2; n2=tmp; } a=a/n2; b=b/n2; } int main(){ while(cin>>str){ //取出a 和b这两个数 fun(); gcd(a,b); while(a>1){ q=b/a; r=b-a*q; cout<<1<<"/"<<q+1<<"+"; a=a-r; b=b*(q+1); gcd(a,b); } cout<<1<<"/"<<b<<endl; } return 0; }