標籤:
Integer Approximation
| Time Limit: 1000MS |
|
Memory Limit: 65536K |
| Total Submissions: 5326 |
|
Accepted: 1750 |
Description
The FORTH programming language does not support floating-point arithmetic at all. Its author, Chuck Moore, maintains that floating-point calculations are too slow and most of the time can be emulated by integers with proper scaling. For example, to calculate the area of the circle with the radius R he suggests to use formula like R * R * 355 / 113, which is in fact surprisingly accurate. The value of 355 / 113 ≈ 3.141593 is approximating the value of PI with the absolute error of only about 2*10-7. You are to find the best integer approximation of a given floating-point number A within a given integer limit L. That is, to find such two integers N and D (1 <= N, D <= L) that the value of absolute error |A - N / D| is minimal.
Input
The first line of input contains a floating-point number A (0.1 <= A < 10) with the precision of up to 15 decimal digits. The second line contains the integer limit L. (1 <= L <= 100000).
Output
Output file must contain two integers, N and D, separated by space.
Sample Input
3.1415926535897910000
Sample Output
355 113
Source
Northeastern Europe 2001, Far-Eastern Subregion
分析:
枚舉
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 double a,min=100005; 5 int n; 6 cin>>a>>n; 7 double b,c; 8 c=b=1; 9 int p=1,q=1;10 while(c<=n&&b<=n){11 if(c/b>a){12 if(c/b-a<min){13 min=c/b-a;14 p=c;15 q=b;16 }17 b++;18 }19 else{20 if(a-c/b<min){21 min=a-c/b;22 p=c;23 q=b;24 }25 c++;26 } 27 }28 cout<<p<<" "<<q<<endl;29 return 0;30 }
poj 1650 Integer Approximation