NC200572. 显示器
描述
输入描述
第一行是一个整数,表示样例的个数。
每个样例的第一行为3个整数,,表示显示器的像素为r行c列,有m种显示比例。
以后的m行,每行两个整数,保证a与b互质。
输出描述
对于每个样例的显示比例,输出最大的显示分辨率,第一个为列,第二个为行,中间一个空格隔开。如果不可能,输出两个0。
每个样例之间用一个空行隔开。
示例1
输入:
2 1600 900 3 16 9 8 5 4 3 1024 768 3 16 9 8 5 4 3
输出:
1600 900 1440 900 1200 900 1024 576 1024 640 1024 768
C(clang 3.9) 解法, 执行用时: 7ms, 内存消耗: 488K, 提交时间: 2019-12-28 19:31:38
# include <stdio.h> int main(){ int t,c,a,b,d,e,n,r; scanf("%d",&t); while(t--){ scanf("%d%d%d",&c,&r,&n); while(n--){ scanf("%d%d",&a,&b); d=c/a; e=r/b; if(d>=e)printf("%d %d\n",a*e,b*e); else printf("%d %d\n",a*d,b*d); } if(t!=0)printf("\n"); } }
C++14(g++5.4) 解法, 执行用时: 38ms, 内存消耗: 608K, 提交时间: 2019-12-28 19:38:42
#include<bits/stdc++.h> using namespace std; int main(){ int t,c,r,n,m,a,b,j; cin>>t; while(t--){ cin>>c>>r>>m; for(int i=0;i<m;i++){ cin>>a>>b; for(j=1;a*j<=c&&b*j<=r;j++); cout<<a*(j-1)<<" "<<b*(j-1)<<endl; } if(t)cout<<endl; } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 24ms, 内存消耗: 548K, 提交时间: 2020-07-31 16:36:24
#include<iostream> #include<cmath> using namespace std; int main() { int t,r,c,n,a,b; cin>>t; while(t--){ cin>>c>>r>>n; while(n--){ cin>>a>>b; int ans=min(c/a,r/b); cout<<a*ans<<' '<<b*ans<<endl; } cout<<endl; } }
Python3(3.5.2) 解法, 执行用时: 154ms, 内存消耗: 3448K, 提交时间: 2019-12-28 19:19:56
T=int(input()) for t in range(T): r,w,n=list(map(int,input().split())) for i in range(n): a,b=list(map(int,input().split())) x=min(r//a,w//b) print(a*x,b*x) if (t<T-1):print()