hdu 4577 X-Boxes(大数)

来源:互联网 发布:软件测试具体流程 编辑:程序博客网 时间:2024/06/06 01:34


想用c++来写大数,看来还是不太现实,借鉴了java版的

import java.io.*;import java.math.*;import java.util.*;/* * (2x-1)*2^(ky-1) <= n  * (2x-1)*2^(ky) <= n*2 */public class Main{    public static void main(String args[])    {        Scanner cin = new Scanner(new BufferedInputStream(System.in));        int t, k;        BigInteger n, y, c;        t = cin.nextInt();        while (t-->0)        {            BigInteger res = BigInteger.ZERO;            n = cin.nextBigInteger();            k = cin.nextInt();            n = n.multiply(BigInteger.valueOf(2));            y = BigInteger.valueOf(1<<k);            while (n.compareTo(BigInteger.ZERO) > 0)            {                n = n.divide(y);                c = n.add(BigInteger.ONE).divide(BigInteger.valueOf(2));                res = res.add(c);            }            System.out.println(res);        }    }}


0 0