Sum of Numerators

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…做法同理

逆水行舟,不进则退~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值