hdu 2503 1713 1108 最小公倍数&最大公约数
gcd模板:
__int64 gcd(__int64 a,__int64 b) { retur b==0?a:gcd(b,a%b); }
1108:
#include<iostream> #include<cstdio> using namespace std; __int64 gcd(__int64 a,__int64 b) { return b==0?a:gcd(b,a%b); } int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) { printf("%d\n",a*b/gcd(a,b)); } return 0; }
2503:
#include<iostream> using namespace std; __int64 gcd(__int64 a,__int64 b) { return b==0?a:gcd(b,a%b); } int main() { __int64 n,a,b,c,d,k,tmp,m; cin>>n; while(n--) { cin>>a>>b>>c>>d; tmp=gcd(b,d); m=a*d/tmp+c*b/tmp; k=gcd(m,b*d/tmp); } return 0; }
1713:
#include<iostream> #include<cstdio> using namespace std; __int64 gcd(__int64 a,__int64 b) { return b ==0 ? a:gcd(b,a%b); } int main() { __int64 a,b,c,d,n,k,m,tmp; cin>>n; while(n--) { scanf("%I64d%*c%I64d %I64d%*c%I64d",&a,&b,&c,&d); tmp=gcd(a*d,b*c); k=gcd(a*b*c*d,b*d*tmp); if(tmp*b*d==k)printf("%I64d\n",a*b*c*d/k); else printf("%I64d/%I64d\n",a*b*c*d/k,tmp*b*d/k); } return 0; }