PKU 3911 Internet Service Providers
問題
整数N, Cが与えられる。
T(C - TN)を最大にするような整数Tを求めよ。
複数ある場合は最も小さいものを求めよ。
方針
Tについての二次関数なので、最大値を取るような実数Tはわかる。
Tは整数なので、それを近い整数に丸める。
ソースコード
int main() { int n,c; while(~scanf("%d%d",&n,&c)){ if(n==0){ puts("0"); continue; } int t=c/(2*n); if(t*(c-(ll)t*n)<(t+1)*(c-(t+1ll)*n))t++; printf("%d\n",t); } return 0; }