题目链接
题意
给定 N,K,求解将序列 {2Ki} 中元素全部约分后的分子和,其中 i 遍历 1∼N。
制约
N∈[1,109],K∈[0,109]
解答
首先注意到 gcd(2K,odd)=1,于是我们先将所有奇数和算入答案,我们知道:
i=1∑N[i%2=1]×i=⌈2N⌉2
即 x项1+3+5+7+⋯+N=x2
接下来考虑偶数与 2K 约分的过程,对于每一个偶数,都可写作
X=x2t,wheregcd(2,x)=1
于是 2K 将会约分所有 t≤K 的部分,使得其变为一段奇数和,使用上述算式求解即可。
最后再加上没有被约分的偶数和即可,即
i=1∑N[i%2=0]×i=⌊2N⌋×(⌊2N⌋+1)
即 x项2+4+6+8+⋯+N=2×(1+2+3+4+⋯+2N)
参考代码
using i64 = long long;
void solve() {
int n, k;
std::cin >> n >> k;
i64 ans = 0;
for (k += 1; k -- && n; n -= (n + 1) / 2) {
ans += 1LL * ((n + 1) / 2) * ((n + 1) / 2);
(!k) && (ans += 1LL * (n / 2) * (n / 2 + 1));
}
std::cout << ans << '\n';
}