首页 > 代码库 > sdut 2847 Monitor (思维题)
sdut 2847 Monitor (思维题)
题目
题意:给定a, b, x, y; 求使c, d; 使c:d = x :y; 且c<=a, d<=b, 而且c, d尽量大。
先求最小倍数, 再用最小倍数乘 x, y;
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 using namespace std; 6 7 long long gcd(long long a, long long b) 8 { 9 return b?gcd(b, a%b):a; 10 } 11 int main() 12 { 13 long long a, b, x, y, tmp; 14 while(~scanf("%lld%lld%lld%lld", &a, &b, &x, &y)) 15 { 16 tmp = gcd(x, y); 17 x /= tmp; 18 y /= tmp; 19 tmp = min(a/x, b/y); 20 printf("%lld %lld\n", x*tmp, y*tmp); 21 } 22 return 0; 23 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。