scanf("%d %lf", &n, &x); for ( i=0; i<=n; i++ ) scanf(“%lf”, &a[i]); printf("%.1f\n", f(n, a, x)); return0; }
/* 你的代码将被嵌在这里 */
关键代码
第一印象写出来的,时间复杂度大于O(n),超时
1 2 3 4 5 6 7 8 9 10 11 12 13
doublef( int n, double a[], double x ){ double res=0,sum=1; for(int i=0;i<=n;i++){ sum = a[i]; for(int j=0;j<i;j++){ sum *= x; } res += sum; } return res;
}
时间复杂度优化为O(n)
1 2 3 4 5 6 7 8 9 10 11 12
doublef( int n, double a[], double x ){ double res=0,sum=1,x_i=1; for(int i=0;i<=n;i++){ sum = a[i]; if(i>0){ x_i *= x; } sum *= x_i; res += sum; } return res; }