B. Candies Division

Santa has n candies and he wants to gift them to k kids. He wants to divide as many candies as possible between all k kids. Santa can’t divide one candy into parts but he is allowed to not use some candies at all.

Suppose the kid who recieves the minimum number of candies has a candies and the kid who recieves the maximum number of candies has b candies. Then Santa will be satisfied, if the both conditions are met at the same time:

b−a≤1 (it means b=a or b=a+1);
the number of kids who has a+1 candies (note that a+1 not necessarily equals b) does not exceed ⌊k2⌋ (less than or equal to ⌊k2⌋).
⌊k2⌋ is k divided by 2 and rounded down to the nearest integer. For example, if k=5 then ⌊k2⌋=⌊52⌋=2.

Your task is to find the maximum number of candies Santa can give to kids so that he will be satisfied.

You have to answer t independent test cases.

Input
The first line of the input contains one integer t (1≤t≤5⋅104) — the number of test cases.

The next t lines describe test cases. The i-th test case contains two integers n and k (1≤n,k≤109) — the number of candies and the number of kids.

Output
For each test case print the answer on it — the maximum number of candies Santa can give to kids so that he will be satisfied.

Example
input
5
5 2
19 4
12 7
6 2
100000 50010
output
5
18
10
6
75015

#include<iostream>
using namespace std;
int main()
{
	int x;
	cin >> x;
	while (x--)
	{
		int n, k,a,b;
		cin >> n >> k;
		a = n / k;
		b = n % k;
		if (b <= k / 2)
			cout << a * k + b << endl;
		else
			cout << a * k + k / 2<<endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值