Even Number Theory

题目链接

 

ps:Java水题。比赛的时候以为直接暴力。

但其实TLE.

然后打了一个表。

然而,只找到一点规律。

最后,找到了。

其实就是把数转化为二进制。

然后,遍历二进制中1.位数为n;ans+=2^n-1;

然后ans用大数;

import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;
 
public class bigint {
 
	public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int t=cin.nextInt();
        while(t>0) {
        	BigInteger n=cin.nextBigInteger();
            BigInteger ans = new BigInteger("0");
            BigInteger l = new BigInteger("1");
        	String s;
        	s=n.toString(2);
        	//System.out.println(s);
        	int len=s.length();
        	int x=0;
        	for(int i=len-1;i>=0;i--) {
        		char c=s.charAt(i);
        		//System.out.println(c);
        		if(c=='1') {
        			 BigInteger m = new BigInteger("2");
        			 m=m.pow(x);
        			 m=m.subtract(l);
        			 ans=ans.add(m);
        		}
        		x++;
        	}
        	System.out.println(ans);
        	t--;
        }
	}
}

 

posted on 2019-04-15 11:45  湫叶  阅读(85)  评论(0编辑  收藏  举报

导航