| ||||||||||
| 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 | |||||||||
Re:被大数据吓傻了,我还手写pow,然后还是WAIn Reply To:被大数据吓傻了,我还手写pow,然后还是WA Posted by:201211050121 at 2014-08-31 14:35:21 >
> import java.util.*;
> import java.math.*;
> public class GG
> {
> public static void main(String args[])
> {
> BigInteger n=BigInteger.ZERO;
> BigInteger p=BigInteger.ZERO;
> Scanner cin=new Scanner(System.in);
> while(cin.hasNext())
> {
> n=cin.nextBigInteger();
> p=cin.nextBigInteger();
> if(n.compareTo(BigInteger.ONE)==0){
> System.out.println(p);
> continue;
> }
> int l=1,r=2000000010;
> while(l<r)
> {
> int mid=(l+r)/2;
> BigInteger tmp=mypow(BigInteger.valueOf(mid),n);
> if(tmp.compareTo(p)==0)
> {
> System.out.println(mid);
> break;
> }
> else if(tmp.compareTo(p)<0)
> l=mid+1;
> else
> r=mid;
> }
> }
> }
> public static BigInteger mypow(BigInteger a,BigInteger b){
> BigInteger ans = BigInteger.ONE;
> while(b.compareTo(BigInteger.valueOf(1))>=0){
> //System.out.println(b+">>>>");
> BigInteger c=b.mod(BigInteger.valueOf(2));
> if(c.equals(BigInteger.valueOf(1))){
> ans = ans.multiply(a);
> b = b.subtract(BigInteger.ONE);
> }
> b = b.divide(BigInteger.valueOf(2));
> a = a.multiply(a);
> }
> return ans;
> }
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator