zoukankan      html  css  js  c++  java
  • Codeforces #617 (Div. 3)B. 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 1xs1≤x≤s , buy food that costs exactly xx burles and obtain x10⌊x10⌋ burles as a cashback (in other words, Mishka spends xx burles and obtains x10⌊x10⌋ back). The operation ab⌊ab⌋ 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.

    Input

    The first line of the input contains one integer tt (1t1041≤t≤104 ) — the number of test cases.

    The next tt lines describe test cases. Each test case is given on a separate line and consists of one integer ss (1s1091≤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
     
    6
    1
    10
    19
    9876
    12345
    1000000000
    
    Output
     
    1
    11
    21
    10973
    13716
    1111111111
    大意就是假设花出去x元,能返还x/10向下取整的钱数,问有ss元的话最多可以花出去多少。根据题意可以想到每次应该在返还钱数一定的情况下尽可能少的花,这样省下来的钱加上返还的钱花出去以后相比于原来有可能获得更多的返还。
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            long long ans=n;
            int res=n;
            while(res)
            {
                ans+=res/10;
                if(res>=10)res=res%10+res/10;//剩下的钱满十元的话尽可能少花,即模10
                else res/=10;//剩下的钱不满十元的话直接花掉
            }
            cout<<ans<<endl;
        }    
    }
    View Code
  • 相关阅读:
    LockFree的栈实现及与加锁实现的性能对比
    redis源码笔记-redis.conf
    【ASP.NET】应用程序、页面和控件的生命周期
    【ASP.NET】HTTP客户请求的数据格式说明
    【ASP.NET】页面间传值
    【ASP.NET】Page.IsPostBack 属性
    【ASP.NET】互联网HTTP连接等出错代码大全
    【经验分享】抽象类、虚函数、接口、多态 概念与关系的理解
    【架构设计】需求分析
    【经验分享】常用正则表达式收集
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/12268713.html
Copyright © 2011-2022 走看看