A group of N Internet Service Provider companies (ISPs) use a private communication channel that has a maximum capacity of C traffic units per second. Each company transfers T traffic units per second through the channel and gets a profit that is directly proportional to the factor T * (C - T * N). The problem is to compute T_optim, the smallest value of T that maximizes the total profit the N ISPs can get from using the channel. Notice that N, C, T, and T_optim are integer numbers.
输入格式
Each data set corresponds to an instance of the problem above and contains two integral numbers - N and C - with values in the range from 0 to 10^9. The input data are separated by white spaces, are correct, and terminate with an end of file. For each data set the program computes the value of T_optim according to the problem instance that corresponds to the data set.
输出格式
The result is printed on the standard output from the beginning of a line. There must be no empty lines on the output. An example of input/output is shown below.
样例输入
1 0
0 1
4 3
2 8
3 27
25 1000000000
样例输出
0
0
0
2
4
20000000
水题,解出方程,不过要使T尽量小
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e6+5;
int main() {
LL n,c;
int T;
scanf("%d",&T);
int cas=0;
while(T--)
{
scanf("%lld %lld",&n,&c);
if(n==0||c==0) printf("Case %d: 0\n",++cas);
else
{
LL t=c/(2*n);
//cout<<t<<endl;
//cout<<t*(c-t*n)<<" "<<(t+1)*(c-(t+1)*n)<<endl;
if(t*(c-t*n)>=(t+1)*(c-(t+1)*n))
printf("Case %d: %lld\n",++cas,t);
else
printf("Case %d: %lld\n",++cas,t+1);;
}
}
return 0;
}