【寒假CodeForces】B. Food Buying 題解

歡迎收藏個人博客:【寒假CodeForces】B. Food Buying 題解

題目鏈接:B. Food Buying

題目

Mishka wants to buy some food in the nearby shop. Initially, he has s burles on his card.

Mishka can perform the following operation any number of times (possibly, zero): choose some positive integer number 1≤x≤s, buy food that costs exactly x burles and obtain ⌊x/10⌋ burles as a cashback (in other words, Mishka spends x burles and obtains ⌊x/10⌋ back). The operation ⌊a/b⌋ means a divided by b rounded down.

It is guaranteed that you can always buy some food that costs x for any possible value of x.

Your task is to say the maximum number of burles Mishka can spend if he buys food optimally.

For example, if Mishka has s=19 burles then the maximum number of burles he can spend is 21. Firstly, he can spend x=10 burles, obtain 1 burle as a cashback. Now he has s=10 burles, so can spend x=10 burles, obtain 1 burle as a cashback and spend it too.

You have to answer t independent test cases.

輸入

The first line of the input contains one integer t (1≤t≤10^4) — the number of test cases.

The next t lines describe test cases. Each test case is given on a separate line and consists of one integer s (1≤s≤10^9) — the number of burles Mishka initially has.

輸出

For each test case print the answer on it — the maximum number of burles Mishka can spend if he buys food optimally.

樣例輸入

6
1
10
19
9876
12345
1000000000

樣例輸出

1
11
21
10973
13716
1111111111

題意

你每花 n 塊錢,都能獲得 ⌊x/10⌋ 塊錢(⌊x/10⌋ 的意思是 x/10 向下取整),問你最多能花多少錢。

解題思路

既然向下取整的話那不就是說個位數的錢花出去就是白給嗎,所以能花整十塊就只花整十塊。

所以我們把 n % 10 留下來,把 n - (n % 10) 花出去然後獲得 n/10 塊錢,剩下的錢數就是 n = n/10 + (n % 10) 。一直把錢花完就好。硬要說也是簡單模擬吧。

代碼

#include <iostream>

typedef long long ll;

using namespace std;

int main() {
        ios::sync_with_stdio(0); cin.tie(0);
        int t; cin >> t;
        while (t--) {
                ll n; cin >> n;
                ll s = 0;
                while (n) {
                        if (n > 9) s += n - (n % 10), n = n/10 + (n % 10);
                        else s += n, n = 0;
                }
                cout << s << endl;
        }
        return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章