1 条题解
-
0
C++ :
#include <iostream> #include <climits> using namespace std; int main() { int a, b, l; double diff = INT_MAX; int ra, rb; cin >> a >> b >> l; int m, n; for (int i = 1; i <= l; i++) { if(a>=b){ m=1; n=i; } else { m=i; n=l; } for (int j = m; j <= n; j++) { int x, y, z; if (i >= j) { x = i; y = j; } else { x = j; y = i; } do { z = x % y; x = y; y = z; } while (z); //求最大公约数,公约数为1则x,y互质 if (x == 1 && (double)i / j >= (double)a / b && (double)i / j - (double)a / b < diff ) { diff = (double)i / j - (double)a / b; ra = i; rb = j; } } } cout << ra << " " << rb << endl; return 0; }
Pascal :
program radio; var a,b,l,i,j,k,m:longint; p,q,ans:double; function gcd(x,y:longint):longint; begin if y=0 then exit(x) else exit(gcd(y,x mod y)); end; begin readln(a,b,l); p:=a/b; ans:=1010101010; for i:=1 to l do for j:=1 to l do if (gcd(i,j)=1)and(i/j>=p)and(i/j-p<ans) then begin ans:=i/j-p; k:=i; m:=j; end; writeln(k,' ',m); end.
- 1
信息
- ID
- 1950
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者