NC211252. I、炎炎消防队
描述
输入描述
多组输入第一行输入测试的样例数量T以后每一行输入实数y的值。(0<y<1e10)
输出描述
每一行输出函数的最小值(精确到小数点后四位)。
示例1
输入:
2 10 20
输出:
-2.6256 -8.2788
C++14(g++5.4) 解法, 执行用时: 52ms, 内存消耗: 384K, 提交时间: 2020-08-23 14:59:03
#include<bits/stdc++.h> using namespace std; const int maxn=1010; int t; double y; double cal (double x) { return 7*x*x*x*x*x*x*x+6*x*x*x*x*x*x+2*x*x*x+8*x*x-y*x; } int main () { scanf("%d",&t); while (t--) { scanf("%lf",&y); double ans=cal(0); for (double i=0;i<=100;i+=0.0001) ans=min(ans,cal(i)); printf("%.4f\n",ans); } }
C++(clang++11) 解法, 执行用时: 220ms, 内存消耗: 496K, 提交时间: 2020-10-22 13:30:32
#include<iostream> #include<cstdio> using namespace std; double y,a; double f(double x) { return 7*x*x*x*x*x*x*x+6*x*x*x*x*x*x+2*x*x*x+8*x*x-y*x; } int main() { int t; cin>>t; while(t--) { cin>>y; a=0.00; for(double i=0;i<=100;i+=0.0001) a=min(a,f(i)); printf("%.4lf\n",a); } return 0; }
matlab(Octave 4.0.0) 解法, 执行用时: 169ms, 内存消耗: 9932K, 提交时间: 2020-08-23 16:08:15
t=input(''); while(t) t=t-1; y=input(''); x1=0;x2=100; yx=@(x)(7*x^7+6*x^6+2*x^3+8*x^2-y*x); [xn0,fval]=fminbnd(yx,x1,x2); disp(fval); end