# ZeroJudge - f332: 貝瑞的鐵線體積 ### 題目連結:https://zerojudge.tw/ShowProblem?problemid=f332 ###### tags: `ZeroJudge` `數學` `微積分` `代數` ```cpp= #include <iostream> #include <iomanip> using namespace std; #define PI 3.14159265358979 struct polynomial { int power; double coefficients[15]; void Square() { double buffer[15] = {}; for (int i = 0; i <= power; ++i) for (int j = 0; j <= power; ++j) buffer[i + j] += coefficients[i] * coefficients[j]; power <<= 1; for (int i = 0; i <= power; ++i) coefficients[i] = buffer[i]; } double Sample(int value) { double mapped = 0, base = 1; for (int i = 0; i <= this->power; ++i, base *= value) mapped += this->coefficients[i] * base; return mapped; } double Revolution(int upper, int lower) { this->Square(); for (int i = this->power; i >= 0; --i) this->coefficients[i + 1] = this->coefficients[i] / (i + 1); ++(this->power); return (this->Sample(upper) - this->Sample(lower)) * PI; } } wire; int main() { cin.sync_with_stdio(false); cin.tie(nullptr); int times, upper, lower; cin >> times; while (times--) { cin >> wire.power; for (int i = wire.power; i >= 0; --i) cin >> wire.coefficients[i]; cin >> lower >> upper; cout << fixed << setprecision(2) << wire.Revolution(upper, lower) << '\n'; } } ```