您的位置:首页 > 其它

UVa Live Archive 2911 & POJ 3066 - Maximum

2014-06-24 17:31 429 查看
传送门UVa Live Archive 2911 & POJ 3066 - Maximum



题意:计算满足题目的两个条件的最大值。

因为p一定是偶数,所以只要让x绝对值越大越好。所以就尽量往sqrt(a)上取,如果不够就取-1/sqrt(a),增加储备给下一次。



#include <cstdio>
#include <cmath>
using namespace std;

int main()
{
//freopen("input.txt", "r", stdin);
int p, m, a, b, acnt, bcnt, i;
while (~scanf("%d%d%d%d", &m, &p, &a, &b))
{
acnt = bcnt = 0;
double k = sqrt(a * 1.0);
double temp = a * b;
for (i = 0; i < m - 1; i++)
{
if (temp >= a)
{
acnt++;
temp -= a;
}
else
{
bcnt++;
temp++;
}
}
double ans = acnt * pow(k, p) + bcnt * pow(k, -p) + pow(temp / k, p);
printf("%d\n", (int)(ans + 0.5));
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM POJ UVa Live Archive