zoukankan      html  css  js  c++  java
  • CodeForces 625A 思维

    题意是说一个人喝酒 有两种办法 买塑料瓶的 a块钱 喝了就没了 或者是买玻璃瓶的b块钱 喝完还能卖了瓶子c块钱 求最多能喝多少瓶

    在开始判断一次 a与b-c的关系 即两种方式喝酒的成本

    如果a<=b-c 那么直接全部买塑料瓶就行了 没必要买玻璃瓶 因为麻烦 而且会出现钱不够b却够b-c这种情况 很麻烦

    如果a>b-c  也就是说买玻璃瓶更省一些 就应当先买玻璃瓶的 不行了再尝试塑料瓶

    第一种情况只做一次除法就够了 

    第二种情况 如果用while循环(n>b)来做 会超时在test48...醉倒在梨花风凉的夜晚..

    在这里有一个技巧 当n>b时 先让n-=b 这时候留的钱可以进行无限次循环喝酒成本  即tot=(n-b)/(b-c)+1  加的一是一开始减去的b的次数 然后再求之后能不能喝塑料瓶

    英语好伤..读题耗费了好久...

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<map>
    #include<math.h>
    using namespace std;
    long long int a,b,c;
    long long int n;
    int xiao;
    int main(){
    while(~scanf("%lld",&n))
    {
        scanf("%lld%lld%lld",&a,&b,&c);
        long long int ans=0;
        if(a<=(b-c))
        {
            while(n>=a)
            {
               long long int tot=n/a;
                ans+=tot;
                n-=tot*a;
            }
            printf("%lld
    ",ans);
        }
        else if(a>(b-c))
        {
            long long int yu=b-c;
            if(n>=b)
            {
                ans+=(n-b)/ yu+1;
            }
            n-=ans*yu;
            while(n>=a)
            {
              long long  int tot=n/a;
                ans+=tot;
                n-=tot*a;
            }
            printf("%lld
    ",ans);
        }
    
    }
    }
    

      

  • 相关阅读:
    领域驱动设计精简版--阅读笔记
    ATM机的面向对象分析--笔记
    第一部分 Spring 基础
    spring in action 5 笔记--spring 实战 第4版和第5版对比
    Redis深度历险
    《Spring in action》之Spring之旅
    递归算法(java)
    java中static学习总结
    浅谈HookSSDT和和Resume(恢复)SSDT
    转---派遣例程与IRP结构
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/5204144.html
Copyright © 2011-2022 走看看