| ||||||||||
| 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 | |||||||||
27237237 --- no solutionIn Reply To:谁给一组数据 Posted by:lookus at 2005-07-05 17:51:53 > 代码是很久以前写的(现在看不懂了),但没过,改了一下,测了很多数据好像还可以,就是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