| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁给一组数据代码是很久以前写的(现在看不懂了),但没过,改了一下,测了很多数据好像还可以,就是WA
import java.util.*;
import java.math.*;
public class Main
{
public static void main(String args[])
{
final BigInteger inf = BigInteger.TEN.pow(1000);
BigInteger g[], b[];
int d, a[], p[], q[], i, j, a02;
double d2;
Scanner cin = new Scanner(System.in);
try
{
a = new int[50000];
p = new int[50000];
q = new int[50000];
p[0] = 0;
q[0] = 1;
for (;;)
{
d = cin.nextInt();
d2 = Math.sqrt(d);
int dd = (int) (d2+0.000001);
if (dd * dd == d)
{
System.out.println("No solution!");
continue;
}
a02 = (int) ((p[0] + d2) / q[0]) * 2;
g = new BigInteger[50000];
b = new BigInteger[50000];
g[0] = BigInteger.valueOf(0);
g[1] = BigInteger.valueOf(1);
b[0] = BigInteger.valueOf(1);
b[1] = BigInteger.valueOf(0);
for (i = 0;; ++i)
{
a[i] = (int) ((p[i] + d2) / q[i]);
if (a[i] == a02)
break;
p[i + 1] = a[i] * q[i] - p[i];
q[i + 1] = (d - p[i + 1] * p[i + 1]) / q[i];
g[i + 2] = g[i + 1].multiply(BigInteger.valueOf(a[i])).add(
g[i]);
b[i + 2] = b[i + 1].multiply(BigInteger.valueOf(a[i])).add(
b[i]);
}
if ((i & 1) == 1)
{
int ii = 2 * (i+1);
for (; i < ii; ++i)
{
a[i] = (int) ((p[i] + d2) / q[i]);
p[i + 1] = a[i] * q[i] - p[i];
g[i + 2] = g[i + 1].multiply(BigInteger.valueOf(a[i]))
.add(g[i]);
b[i + 2] = b[i + 1].multiply(BigInteger.valueOf(a[i]))
.add(b[i]);
}
if(inf.compareTo(g[i-1])>0 && inf.compareTo(b[i-1])>0)
System.out.println(g[i - 1].toString() + " "
+ b[i - 1].toString());
else
System.out.println("No solution!");
}
else
if(inf.compareTo(g[i+1])>0 && inf.compareTo(b[i+1])>0)
System.out.println(g[i + 1].toString() + " "
+ b[i + 1].toString());
else
System.out.println("No solution!");
}
} catch (Exception e)
{
}
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator