Water
题目描述
有
n
n
n 个杯子,每个杯子的容积是
a
a
a,且初始装有
b
b
b 体积水。
你可以进行任意次操作,每次操作选择任意两个杯子,将其中一个杯子内的水全部倒入另一个杯子中,但是过程中杯子里的水不能溢出(即不能超过其容积),如果不满足则无法进行该操作。
请通过合法的操作,最大化装有最多水的杯子里水的体积。
输入格式
一行三个整数,表示 a , b , n a,b,n a,b,n。
输出格式
一行一个整数 x x x,表示最多水的杯子内的水的体积。
样例 #1
样例输入 #1
5 2 2
样例输出 #1
4
样例 #2
样例输入 #2
11 5 7
样例输出 #2
10
提示说明
【样例 1 解释】
假设现在有两个杯子 A , B A,B A,B,可以先把 A A A 中的全部水倒入 B B B 中,此时 A A A 有 0 0 0 升水, B B B 有 4 4 4 升水,结束操作。此时最多水杯子内水的数量为 4 4 4。
【数据规模与约定】
测试点编号 | n ≤ n\le n≤ | 特殊性质 |
---|---|---|
1 ∼ 2 1\sim2 1∼2 | 1 0 5 10^5 105 | 保证无论如何操作都不会溢出 |
3 ∼ 6 3 \sim 6 3∼6 | 1 0 6 10^6 106 | 无 |
7 ∼ 10 7 \sim 10 7∼10 | 1 0 9 10^9 109 | 无 |
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 9 1 \le n \le 10^9 1≤n≤109, 1 ≤ a ≤ 1 0 18 1\le a\le 10^{18} 1≤a≤1018, 1 ≤ b ≤ min ( a , 1 0 9 ) 1\le b\le \min(a,10^9) 1≤b≤min(a,109)。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll a,b,n;
cin>>a>>b>>n;
if(b*n<=a)
cout<<b*n<<endl;
else
cout<<(a-(a%b))<<endl;
return 0;
}