Sum of Numerators
题意:给定n,k;每一项ai/2k约分后, ∑ \sum ∑分子。
假设n = 8,k = 2;
初始分子:
1 2 3 4 5 6 7 8
res = (1+8) * 8 / 2 = 36
第一轮约分后:
1 1 3 2 5 3 7 4
[1-n]之间的偶数都减半
res -= (1+4) * 4/ 2 =26
第二轮约分后:
1 1 3 1 5 3 7 2
[1-n/2]之间的偶数都减半
res -= (1+2) * 2 / 2 = 23
直到!n || !k 截止;
Code:
int T;
int main() {
cin >> T;
while(T--) {
ll n,k;
cin>>n>>k;
ll sum = (1+n)*n/2;
while(n&&k) {
n>>=1;
k--;
sum -= (1+n)*n/2;
}
cout<<sum<<endl;
}
return 0;
}
题目变式:
可以每一项都除以3k,4k…做法同理
逆水行舟,不进则退~