| ||||||||||
| 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 | |||||||||
附毛,炫耀呢吧In Reply To:Java的BigInteger很好很强大。。。不是时间和内存占用率也很强大。。。附AC代码 Posted by:yzhw at 2009-07-01 10:40:32 > Source Code
>
> Problem: 1090 User: yzhw
> Memory: 5344K Time: 1829MS
> Language: Java Result: Accepted
>
> Source Code
> import java.math.*;
> import java.io.*;
> public class Main {
>
> /**
> * @param args
> */
> static boolean[] data;
> static BigInteger std[];
> static BigInteger zero=new BigInteger("0"),one=new BigInteger("1"),two=new BigInteger("2");
> static BigInteger to1(int num)
> {
> if(num==1)
> {
> if(data[1]) return zero;
> else return one;
> }
> else
> {
> if(data[num])
> {
> return to0(num-1);
> }
> else
> {
> return to1(num-1).add(one).add(std[num-1]);
> }
> }
> }
> static BigInteger to0(int num)
> {
> if(num==1)
> {
> if(data[1]) return one;
> else return zero;
> }
> else
> {
> if(data[num])
> {
> return to1(num-1).add(one).add(std[num-1]);
> }
> else
> {
> for(int i=num;i>=1;i--)
> if(data[i]) return to0(i);
> return to0(1);
> }
> }
> }
> public static void main(String[] args) throws IOException{
> StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
> int num;
> in.nextToken();
> num=(int)in.nval;
> data=new boolean[num+1];
> std=new BigInteger[num+1];
> std[1]=new BigInteger("1");
> for(int i=2;i<=num;i++)
> {
> std[i]=new BigInteger(std[i-1].toString()).multiply(two).add(one);
> }
> for(int i=1;i<=num;i++)
> {
> int temp;
> in.nextToken();
> temp=(int)in.nval;
> data[i]=(temp==1?true:false);
> }
> System.out.println(to0(num).toString());
> }
>
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator