2018 6 29 PTA 6 2 多項式求值

2021-09-30 01:38:02 字數 3514 閱讀 1805

title

author

date

createtime

categories

pta 6-2 多項式求值

lindexi

2018-06-29 15:24:28 +0800

2018-6-14 22:0:41 +0800

c 演算法

本題要求實現乙個函式

本題要求實現乙個函式,計算階數為n,係數為a[0]...a[n]的多項式$f(x)=\sum_^(a[i]\times x^i)$在x點的值。

函式介面定義

double

f( int

n, double

a, double

x );

其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f(x)的值。

裁判測試程式樣例

#include

#define

maxn

10double

f( int n, double a, double x );

intmain()

/* 你的**將被嵌在這裡 */

輸入樣例

2

1.11

2.5-

38.7

輸出樣例

-

43.1

可通過**

double

f(int

n, double

a, double

x) // 這個值用來做中間的計算,也就是計算 x 的中間計算

// 為什麼 temp 預設值會是 1 ? 原因就是無論多大的數

// 100000000^0 等於 1

double

temp=1;

for (inti=

0; i

<=

n; i

++)

return

sum;}/*

// 裡面存在x的多少次方,就需要重新定義乙個函式來寫,如果直接寫在**,**很不好看

// 但是因為有時間的限制,所以不能使用這個方式,這個方式是每個 x 都需要重新計算多少次方

// 在工程的開發,要盡量避免這種優化

// 但是在寫題目到是可以這樣考慮

// 每次計算的 x 的方都比原來的大 1 次,也就是我第 2 次的計算可以用到第 1 次計算的結果

double pow(double x, int count)

// 這裡使用 i = 1 因為這裡的值預設 sum 就是等於 x

// 如輸入 x^2 那麼就是 x = x count = 2

// 如果這裡的 i = 0 開始就會首先設定 sum = x;

// sum 會迴圈兩次,於是返回 x^3 和需要的不一樣

for (int i = 1; i < count; i++)

return sum;

}double f(int n, double a, double x)

for (int i = 0; i <= n; i++)

return sum;}*/

考點:大概的輸入

閱讀題目能力

第2個考點是有些問題,如果比較會設計的小夥伴,就會寫出我注釋的**

在工程使用是建議使用被注釋的**,但是被注釋的**會多了一次迴圈,於是會執行超時

第3個考點在於一開始的 n 的值,i <= n的迴圈和i < n的迴圈次數不相同

另外for (int i = 0; i < n; i++)for (int i = 1; i < n; i++)的迴圈次數也不相同,都是相差 1 ,在於初始化 i 的大小和判斷迴圈。

因為 pta 沒有告訴說**的輸出是什麼,而且輸出在**出錯了,所以對於初學者還是比較難的,很多很難知道自己的程式在哪錯了。乙個建議是使用 codeblock 進行除錯或者 visualstudio 除錯。

兩個除錯是不相同,可以看到 codeblock 支援比較簡單的程式,而且使用也很簡單。比較推薦簡單的**使用 codeblock ,如果訓練的要求是實際使用,那麼建議使用 visualstudio 。可以從安裝的時候看到 visualstuio 很大,而且開始部署環境也是比較困難。但是 visualstudio 可以開發幾乎任何的軟體。

在部署完成visualstudio 之後,可以使用我修改的**執行。需要注意在 visualstduio 需要使用scanf_s替換scanf,其他幾乎不需要修改。

下面的**複製之後就可以在 visualstudio 執行除錯,注意 visualstudio

// jisnaicasmanawashar.cpp: 定義控制台應用程式的入口點。

#include

"stdafx.h"

#define

maxn

10double

f(int n, double a, double x);

intmain()

double

f(int n, double a, double x)

// 這個值用來做中間的計算,也就是計算 x 的中間計算

// 為什麼 temp 預設值會是 1 ? 原因就是無論多大的數

// 100000000^0 等於 1

double temp = 1;

for (int i = 0; i <= n; i++)

return sum;}/*

// 裡面存在x的多少次方,就需要重新定義乙個函式來寫,如果直接寫在**,**很不好看

// 但是因為有時間的限制,所以不能使用這個方式,這個方式是每個 x 都需要重新計算多少次方

// 在工程的開發,要盡量避免這種優化

// 但是在寫題目到是可以這樣考慮

// 每次計算的 x 的方都比原來的大 1 次,也就是我第 2 次的計算可以用到第 1 次計算的結果

double pow(double x, int count)

// 這裡使用 i = 1 因為這裡的值預設 sum 就是等於 x

// 如輸入 x^2 那麼就是 x = x count = 2

// 如果這裡的 i = 0 開始就會首先設定 sum = x;

// sum 會迴圈兩次,於是返回 x^3 和需要的不一樣

for (int i = 1; i < count; i++)

return sum;

}double f(int n, double a, double x)

for (int i = 0; i <= n; i++)

return sum;}*/

PTA 6 2多項式求值問題筆記

最近才開始真正開始寫 想把錯題當部落格寫,以下是pta基礎演算法的6 2函式題 本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式 在x點的值。錯誤解題 double f int n,double a,double x sum sum a i x return sum 正確解法 第一...

PTA 6 2 多項式求值 (15 分)

本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式f x i 0 n a i x i 在x點的值。double f int n,double a,double x 其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f x 的值。include define maxn 1...

6 2 多項式求值

6 2 多項式求值 15 分 本題要求實現乙個函式,計算階數為n,係數為a 0 a n 的多項式f x i 0 n a i x i 在x點的值。double f int n,double a,double x 其中n是多項式的階數,a中儲存係數,x是給定點。函式須返回多項式f x 的值。includ...