我并不知道为什么我只得了20分!
#include<iostream> #include<cstdio> using namespace std; int gcd(int x,int y) { // int z; if(y==0) return x; else return gcd(y,x%y); } int main() { int a,b,c,d,m,n,k,l,mm,nn; scanf("%d/%d",&a,&b); scanf("%d/%d",&c,&d); m=a*c; n=b*d; if(m>n) { mm=m; nn=n; swap(m,n); k=mm/gcd(m,n); l=nn/gcd(m,n); printf("%d %d ",k,l); } else if(m<=n) { k=m/gcd(m,n); l=n/gcd(m,n); printf("%d %d ",k,l); } return 0; }
(⊙v⊙)嗯,我终于知道了用辗转相除法时,对a和b的大小关系没有要求。(好好想一下吧)
终于搞明白了!原来题面里要求先输出列,再输出行啊啊啊O(≧口≦)O!调了我一晚上啊!
#include<iostream> #include<cstdio> using namespace std; int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); } int main() { int a,b,c,d,m,n,k,l,z; scanf("%d/%d",&a,&b); scanf("%d/%d",&c,&d); m=a*c; n=b*d; // cout<<gcd(m,n)<<endl; z=gcd(m,n); k=m/z; l=n/z; cout<<l<<" "<<k<<endl; return 0; }