有 n n n元钱,有塑料瓶装的牛奶和玻璃瓶装的牛奶,塑料瓶的装的 a a a元一瓶,玻璃瓶装的 b b b元一瓶,喝完可以用玻璃瓶换 c c c元,问最多能喝多少瓶牛奶
很显然可以发现,只有 ( b − c ) < = a (b-c)<=a (b−c)<=a才会考虑买玻璃瓶装的。另外,可以单独考虑买第一瓶玻璃瓶牛奶,相当于后面的玻璃瓶牛奶只需要 ( b − c ) (b-c) (b−c)一瓶,注意最后还要加上 c c c元。
AC代码:
int main() { long long ans=0,n,a,b,c; scanf("%lld%lld%lld%lld",&n,&a,&b,&c); if(b-c<=a) { if(n>=b) { n-=b;//先买第一瓶玻璃瓶,接下去的可以看做b-c一瓶 ans=1;//第一瓶 ans+=n/(b-c); n=n%(b-c); n+=c;//买完最后一瓶还要加上C元 } ans+=n/a;//看是否还能买塑料瓶 } else ans = n/a;//买塑料的 printf("%lld\n",ans); return 0; }