zoukankan      html  css  js  c++  java
  • 1248

    这道题的解法很多,母函数,dp,暴力都可以。

    假设法....先假设全部买150块的.也就是i,然后看看剩下多少个50块,也就是j

    比如200块,i=1,j=1;
    如果250块,i=1,j=2;
    i = k / 100 //所有的钱都买150元的能买i个

    j = (k / 50) % 3 // 由于三个五十元能买一个150元的物品,j为还剩下多少个50元

    if(i > j) cout << k % 50;   // 如果可以买到150元的个数大于剩余50元的个数,则所有的剩余的五十元可以和一个150元结合,买一个200元的物品,k %50必定小于50

    else cout << 50 * (j - i) + k % 50;      //没有很多的150元可以和50元结合,就必定剩下几个50元(很少),再加上零头。

    显然,一个i价值150块,加上一个j(也就是50块)就可以换一个200块的东西.

    那么如果j都能换,就都换了.  也就是i>j的情况(其实等于也可以,等于划分到任务一部分都对);

    如果不够换,也就是j>i,
    那么把能换的换了,不能换的,只能浪费了..

    等式是先分成50的,看看有几份,3份3份的都去掉,看看还剩几个50的剩下

  • 相关阅读:
    JWPlayer Uncaught Error: Invalid SRT file
    京东电商API
    map, string 强大的STL
    VFL演示样例
    sizeof小览
    Java中httpClient中三种超时设置
    Windows下Mysql5.6启用监控执行脚本的日志
    实时监控MySql状态
    实时监控mysql数据库变化
    SVN命令使用详解
  • 原文地址:https://www.cnblogs.com/anderson0/p/1456449.html
Copyright © 2011-2022 走看看