Tricky Sum【數學】CodeForces 598A
Description
求和是一種最常見的運算,我們經常做的就是1加到n的和。例如,1加到100的和是5050。但是現在,我們稍微變動一下求和方法,對於屬於2的冪次的數,我們做的是減法,其餘仍舊做加法。例如,當n=4的時候,最後的結果應該是-1-2+3-4=-4,因為1、2、4分別是2的0次方、2的1次方、2的2次方。現在請你來計算t次這樣的運算。
Input
輸入第一行是一個正整數t,表示要進行t次運算。接下來t行,每行一個整數n,表示要按新的求和方法計算1到n的和。
注意:1<=t<=100,1<=n<=10^9。
Output
輸出t組答案,每個答案佔一行。
Sample Input
2
4
1000000000
Sample Output
-4
求和是一種最常見的運算,我們經常做的就是1加到n的和。例如,1加到100的和是5050。但是現在,我們稍微變動一下求和方法,對於屬於2的冪次的數,我們做的是減法,其餘仍舊做加法。例如,當n=4的時候,最後的結果應該是-1-2+3-4=-4,因為1、2、4分別是2的0次方、2的1次方、2的2次方。現在請你來計算t次這樣的運算。
Input
輸入第一行是一個正整數t,表示要進行t次運算。接下來t行,每行一個整數n,表示要按新的求和方法計算1到n的和。
注意:1<=t<=100,1<=n<=10^9。
Output
輸出t組答案,每個答案佔一行。
Sample Input
2
4
1000000000
Sample Output
-4
499999998352516354
#include<cstdio>
int main()
{
int t,temp;
long long n,ans;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
ans=(n+1)*n/2;
temp=1;
while(n)
{
ans-=2*temp;
temp*=2;
if(n==1)
break;
n/=2;
}
printf("%lld\n",ans);
}
}
相關文章
- Codeforces 1485F Copy or Prefix Sum
- Divisibility 【數學計數】Codeforces 597A
- codeforces 1216E1(數學+暴力)
- Educational Codeforces Round 165 (Rated for Div. 2) C. Minimizing the Sum題解
- LeetCode: Two sum(兩數之和)LeetCode
- Sum of Square Numbers 平方數之和
- CodeForces571A. Lengthening Sticks(組合數學-容斥)
- 1.兩數之和 Two Sum
- python leetcode 之兩數之和(two sum)PythonLeetCode
- 001,Two Sum(求兩數的和)
- Codeforces Round #688 (Div. 2) C. Triangles(思維,數學)
- 001-ksum 求符合條件的 k 個數 1. Two Sum/15. 3Sum/18. 4Sum/
- 載譚 Binomial Sum 學習筆記筆記
- CodeForces - 628D (數位dp)
- 如何提升自己的Codeforces分數
- 秒殺 2Sum 3Sum 4Sum 演算法題演算法
- GCD SUMGC
- Sum Problem
- 集合sum
- 15+18、3Sum 4Sum
- LeetCode 之 JavaScript 解答第一題 —— 兩數之和(Two Sum)LeetCodeJavaScript
- 力扣.1 兩數之和 N 種解法 two-sum力扣
- leetcode Sum系列LeetCode
- Sum of Left Leaves
- Path-sum
- Path Sum III
- Leetcode Path SumLeetCode
- B - Minimum Sum
- Range Minimum Sum
- Missing Subsequence Sum
- 演算法學習之一:3SUM變體演算法
- Codeforces
- Leetcode 39 Combination SumLeetCode
- md5sum
- 112-Path Sum
- Leetcode 1 two sumLeetCode
- 7.22 APPROX_SUMAPP
- the Sum of Cube hd 5053