B. Food Buying
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
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≤𝑥≤𝑠1≤x≤s,
buy food that costs exactly 𝑥x burles and obtain ⌊𝑥10⌋⌊x10⌋ burles
as a cashback (in other words, Mishka spends 𝑥x burles and obtains
⌊𝑥10⌋⌊x10⌋ back). The operation ⌊𝑎𝑏⌋⌊ab⌋ 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 𝑠=19s=19 burles then the maximum number of
burles he can spend is 2121. Firstly, he can spend 𝑥=10x=10 burles,
obtain 11 burle as a cashback. Now he has 𝑠=10s=10 burles, so can
spend 𝑥=10x=10 burles, obtain 11 burle as a cashback and spend it
too.You have to answer 𝑡t independent test cases.
Input
The first line of the input contains one integer 𝑡t (1≤𝑡≤1041≤t≤104)
— 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≤𝑠≤1091≤s≤109) — the
number of burles Mishka initially has.Output
For each test case print the answer on it — the maximum number of
burles Mishka can spend if he buys food optimally.
Example
input
Copy
6
1
10
19
9876
12345
1000000000
output
Copy
1
11
21
10973
13716
1111111111
思路
模拟下一下买东西的过程:假如 我们有 1234 rmb,设我们花的最多钱数为 sum,一开始的时候 sum = 1234 ,由于四舍五入的原因,我们把所买东西的价格定位:x = 10 rmb,,第一个我们买 123 个东西,这个时候找回了 123 rmb,此时sum = 1234 + 123 = 1357 ,手里剩余的钱为 123 + 4 = 127 ,,, 然后我们 12 东西 找回了 12 rmb 此时剩余的钱为 12 + 7 = 19,sum = 1357 + 12 = 1369 ,,,然后我们继续买 1个物品 找回 1rmb ,手里剩余的钱为 1 + 2 = 3 < 10 此时无法继续买东西,此时最多可以花的💰为: sum = 1369 + 3 = 1372
题解如下
#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<vector>
#include<map>
using namespace std;
const int Len = 2005;
int ar[Len];
void dfs(int mon ,int sum)
{
if(mon / 10 == 0)
{
printf("%d\n",sum);
return;
}
dfs(mon/10 + mon%10 , sum + mon/10);
}
int main()
{
//freopen("T.txt","r",stdin);
int t;
scanf("%d",&t);
while(t --)
{
int n;
scanf("%d",&n);
dfs(n , n);
}
return 0;
}