D题,不理解错在哪里,只能过55%的数据

import java.io.*;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    static StreamTokenizer sk = new StreamTokenizer(br);
    static int MOD = (int)1e9 + 7;
    public static void main(String[] args) throws Exception {
        int T = nextInt();
        for (int cases = 0; cases < T; cases ++ ) {
            long n = nextLong();
            long maxh = 0;
            while ((1L << maxh) - 1 <= n) {
                maxh ++ ;
            }
            maxh -- ;
            long ans = 0L;
            for (long i = 1L; i <= maxh; i ++ ) {
                ans = (ans + (maxh - i + 1) * (1L << (i - 1))) % MOD;
            }

            long a = 1L;
            long surplus = n - ((1L << maxh) - 1);
            while (surplus != 0) {
                if ((surplus & 1) != 0) {
                    ans = (ans + (a << 1) - 1) % MOD;
                }
                a = (a << 1) % MOD;
                surplus >>= 1;
            }
            pw.println(ans);
        }
        pw.flush();
    }


    static int nextInt() throws Exception {
        sk.nextToken();
        return (int)sk.nval;
    }

    static long nextLong() throws Exception {
        sk.nextToken();
        return (long) sk.nval;
    }

    static String nextString() throws Exception {
        sk.nextToken();
        return sk.sval;
    }
}

全部评论

相关推荐

Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务