题目链接:http://codeforces.com/problemset/problem/965/C
题意:
有n颗糖,k个人,每次最多分到M颗糖,然而每个人最多能拿D次。
题解:枚举
数学题,d比较小,枚举d
贪心思考,最好应该是第一个人取i次,其他人取i-1次
x*i+x*(i-1)*(k-1)<=n
若x>m 取x=m 然后重新判断是否可以到 i 组
贴上代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,k,M,D,x,ans;
int main(){
scanf("%lld%lld%lld%lld",&n,&k,&M,&D);
for(int i=1;i<=D;i++){
x=(n)/(k*(i-1)+1);
if(x==0)break;
if(x>M)x=M;
if(ans<x*i){
ans=x*i;
}
}
printf("%lld\n",ans);
return 0;
}