题目大意:给出m, p, a, b,然后xi满足题目中的两个公式, 要求求的 xp1 + xp2 +...+ xpm 的最大值。
解题思路:可以将x1 + x2 +...+ xm = b * 两端同时乘以根号a去计算。然后按照贪心的思想去计算。
#include <stdio.h> #include <math.h> int l, r; double m, p, a, b, tmp, sum; int main() { while (scanf("%lf%lf%lf%lf", &m, &p, &a, &b) == 4) { tmp = a * b; r = l = 0; sum = 0; for (int i = 0; i < m - 1; i++) { if (tmp < a) { tmp++; l++; } else { tmp -= a; r++; } } sum += l / pow(sqrt(a), p); sum += r * pow(sqrt(a), p); sum += pow((tmp / sqrt(a)), p); printf("%d ", int(sum + 0.5)); } return 0; }