XUPT-D

Posted ice-image

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XUPT-D相关的知识,希望对你有一定的参考价值。

/*
     泰泰学长又来玩数字了,泰泰学长想让你帮他求1-n的和,但是这次的求和可不是简单的1+2+...+n。 这次的求和是这样的,如果加到一个数字是2的指数倍,那就不加,反而减掉这个数。
    比如 n = 4:-1-2+3-4 = -4。
    说明:其中1,2,4都是2的指数倍。
Input
    第一行是总询问数 T,接下来T行,每行一个 n,(1<=T<=100)(1<=n<=10^9)
Output

    输出对应的结果
Sample Input
    2
    4
    1000000000
Sample Output
     
    -4
    499999998352516354
*/


可以借助等比数列和位移求解(1+n)*n/2 - 2*(2的等比数列和);
2的等比数列和可以借助位移求解

 

 1 #include <cstdio>
 2 #include <cmath>
 3 typedef long long LL;
 4 using namespace std;
 5 int main(){
 6     int t;
 7     LL n;
 8     scanf("%d", &t);
 9     while(t--){
10         scanf("%lld", &n);
11         LL sum = (1+n)*n/2;
12         int count = 1;
13         while(n >>= 1){
14             count++;
15         }
16         LL temp = 2 * ((LL)pow(2, count) - 1);
17         sum = sum - temp;
18         printf("%lld
", sum);
19     }
20     return 0;
21 } 

 




















以上是关于XUPT-D的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数