Ordered fractions题号：71 难度： 10 中英对照

Consider the fraction, n/d, where n and d are positive integers. If n<d and HCF(n,d)=1, it is called a reduced proper fraction.

If we list the set of reduced proper fractions for d ≤ 8 in ascending order of size, we get:

1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8

It can be seen that 2/5 is the fraction immediately to the left of 3/7.

By listing the set of reduced proper fractions for d ≤ 1,000,000 in ascending order of size, find the numerator of the fraction immediately to the left of 3/7.

Code

public final class p71 {
public static void main(String[] args) {
long start=System.nanoTime();
String result = run();
long end=System.nanoTime();
System.out.println(result);
System.out.println( (end-start)/1000000 + "ms" );
}

//    取值范围
private  static int N = 1000000;
private static int a = 3;
private static int b = 7;

static public String run(){
int bestN = 0;
int bestD = 1;
int curD = N;
int minD = 1;
int curN,delta;
while(curD >= minD){
curN=( curD * a -1)/ b;
if ( (long)bestN * curD < (long)curN * bestD ) {
bestN = curN;
bestD = curD;
delta = a *curD - b*curN;
minD = curD /(delta+1);
}
curD -= 1;
}
return Integer.toString(bestN);
}
}
428570
6ms