二分答案

#include<stdio.h>
int main()
{
    long long int m,n,r,a,b,c,x,y,z,k,i,left,right,mid,h,f,e,p,s,g;
    while(scanf("%lld %lld %lld",&a,&b,&c)!=EOF)
    {
        scanf("%lld %lld %lld",&m,&n,&r);
        scanf("%lld %lld %lld %lld",&k,&x,&y,&z);
        s=(m/a<n/b)?m/a:n/b;
        left=(s<r/c)?s:r/c;
        right=(m*x+n*y+r*z+k)/(a*x+b*y+c*z);
        while(left<=right)
        {
            h=0;f=0;e=0,g=0;
            mid=(left+right)/2;
            if(mid*a>m)
            {
                h=mid*a-m;
            }
            if(mid*b>n)
            {
                f=mid*b-n;
            }
            if(mid*c>r)
            {
                e=mid*c-r;
            }
            if(k>(h*x+f*y+e*z))
                left=mid+1;
            else
                if(k<(h*x+f*y+e*z))
                right=mid-1;
            else
            {
                printf("%lld\n",mid);
                g=1;
                break;
            }
        }
        if(g==0)
        printf("%lld\n",left-1);

    }
}

 

转载于:https://www.cnblogs.com/Leozi/p/10835153.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值