使用C++完成可乐数小程序

题目描述:
小明有n瓶可乐,他每喝完一瓶可乐就会把瓶盖保存起来,k(k>1)个瓶盖可以换一个新的可乐,那么小明最终能喝到多少可乐?
输入格式:
输入包含多组样例,第一行包含一个数字T表示样例组数
之后每个样例包含两个整数n,k,含义如题目描述
输出格式:
每个样例输出一个数字num表示可以喝到的可乐数
输入样例:
2
3 2
4 4
输出样例:
5
5


#include <iostream>
using namespace std;
int main()
{
    int res = 0, T, n, k;
    cin >> T;
    while (T--)
    {
        cin >> n >> k;
        res = n; //开始必有n瓶
        while (n >= k)
        {
            res += n / k;
            n = n / k + n % k;
        }
        cout << res << endl;
    }
    return 0;
}

#include <iostream>
#include <cstdint>

using namespace std;

uint32_t cokes(uint32_t n, uint32_t k)
{
    uint32_t num = n; /*!< 总的可乐数 */
    uint32_t caps = n;/*!< 剩余瓶盖数 */

    while (caps >= k) {
        num += caps / k;
        caps = (caps / k) + (caps % k);
    }

    return num;
}

int main(int argc, char **argv)
{
    uint32_t n, k;
    while (1) {
        cin >> n >> k;
        if (k <= 1) {
            cout << "Invalid exchange rate " << k << "Must bigger than 1" << endl;
        } else {
            cout << cokes(n, k) << endl;
        }
    }
}