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 ⌊x10⌋ burles as a cashback (in other words, Mishka spends x burles and obtains ⌊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 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.
Input
The first line of the input contains one integer t (1≤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≤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.
- 大意就是买东西,每满十元返一元,然后接着买,问最多能买多少钱的东西。
- 如果一个一个减的话肯定要TLE,所以不考虑。
- 这个问题最主要的就是尾数是9的数字,不要搞错了就好。
#include <iostream>
using namespace std;
int main(){
int T,m;
cin>>T;
while(T--){
int sum=0,tmp=0;
cin>>m;
while(m!=0){
sum+=m;
tmp+=m%10;
m/=10;
if(tmp>=10){
m++;//这里如果用tmp++,在199位置会出错,原因是1没有进位。
tmp-=10;
}
}
cout<<sum<<endl;
}
//system("pause");
return 0;
}
- 就是一道简单的模拟,不过要仔细。