【简单题】【数学】-CF-397B-On Corruption and Numbers

题目链接:http://codeforces.com/problemset/problem/397/B

题目描述:

你拥有面值l 到 r 的硬币,每种面值都有无数个,比如3 到 6 就是说你有面值为 3 4 5 6 的硬币,每种有无数个,现在问能否用这些硬币恰好凑出正整数 N ?

解题思路:

一道非常。。活泼有趣的数学题,看着很简单,竟然一直WA!!伤心死了,第二天终于想到了正确的姿势。

计算出最少需要多少枚硬币 minn = N / r + 1 ( 整除特例见代码 )

    最多需要多少枚硬币 maxn = N / l 

你的能力所能达到的凑钱范围是[ minn*l,maxn*r ] 闭区间,这之间的每一块钱都能取到。

注意!要用long long ,不然中间步骤爆出来了

AC代码:

#include <iostream>
#include <cstring>

using namespace std;
typedef long long ll;

int main()
{
    ll t,n,l,r,ans;
    cin>>t;
    while(t--)
    {
        cin>>n>>l>>r;
        if(n<l)
            ans=0;
        else
        {
            ll minn,maxn;
            maxn=n/l;
            if(n%r==0)
                minn=n/r;
            else
                minn=n/r+1;
            if(minn*l<=n&&maxn*r>=n)
                ans=1;
            else
                ans=0;
        }
        if(ans)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
    return 0;
}

AC截图:



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值