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的剩下

  • 相关阅读:
    ApplicationContext
    消息队列种类
    Zookeeper的功能以及工作原理
    java多线程(1)模式 不可变对象
    dubbo容错,负载均衡,协议
    dubbo的底层原理
    消息事务处理
    多线程循环打印 abc
    Spring 事务管理
    文件上传和下载
  • 原文地址:https://www.cnblogs.com/anderson0/p/1456449.html
Copyright © 2011-2022 走看看