Food Buying

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

Mishka can perform the following operation any number of times (possibly, zero): choose some positive integer number 1 \le x \le s1≤x≤s, buy food that costs exactly xx burles and obtain \lfloor\frac{x}{10}\rfloor⌊10x​⌋ burles as a cashback (in other words, Mishka spends xx burles and obtains \lfloor\frac{x}{10}\rfloor⌊10x​⌋ back). The operation \lfloor\frac{a}{b}\rfloor⌊ba​⌋ means aa divided by bb rounded down.

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

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

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

You have to answer tt independent test cases.

题意:买东西,每买10元就会奖励1元,问最终可以买多少钱的东西。

思路:每一次算出是10的多少倍,那么就+多少钱。

注意:每一次的x = 余数+倍数。

#include<iostream>
using namespace std;
typedef long long ll;   //数值比较大所以定义 long long
ll n;
int main()
{
	int t = 0;
	cin >> t;
	while (t--)
	{
		cin >> n;
		ll x = n;
		ll s = 0;
		ll sum1 = 0, sum2 = 0;
		//这个操作就是如果超过10那么就加钱。
		while (x >= 10)
		{
			sum1 = x / 10;    //用来存每一次能加多少钱sum1。
			s = x % 10;       //余数
			sum2 += sum1;      //最后总共加的前sum2
			x = s + sum1;      //下一次的x是余数加上加的钱。
		} 
		cout << sum2 + n << endl;
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值