同碼小數求和問題

2021-10-04 01:50:24 字數 3012 閱讀 1687

問題描述:

s(d,n)= 0.d+0.dd+0.ddd+…+0.dd…d

w(d,n)=0.d+2×0.dd+3×0.ddd+…+n×0.d…d

(兩和式為n項之和,其中第k項小數點後有k個數字d,加權和第k項的權係數為k)

輸入整數d(1≤d≤9),n(1≤n<10000),計算並輸出和s(d,n)與w(d,n)。

設計思想:

1、非精確計算

設定累加器s,w分別求二個累加和。 

設定關於i(1~n)的迴圈實施列舉累加操作。

s的前後項關係:前一項為t(初值為0 ),其後一項顯然為:

t=t/10+0.1*d;

加權和w的每一項在t的基礎上乘加權係數i,即累加t*i。

std:

:cout <<

"請分別輸入的d,n(用空格隔開):"

; std:

:cin >> d >> n;

for(

int i =

1; i <= n; i++

)// 累加求和

std:

:cout <<

"s("

<< d <<

","<< n <<

")="

<< s <<

"\n"

;// 輸出和s

std:

:cout <<

"w("

<< d <<

","<< n <<

")="

<< w <<

"\n"

;// 輸出加權和w

2、精確計算

我們先來看一下,豎式加法是怎麼樣加的。如圖,豎式加法是按位從後往前同位相加(再加進制)的。

具體思路:

設定一維陣列s,s[i]表示和s的小數點後第i位,s[0]為和s的整數部分;同理設定一維陣列w,w[i]表示加權和w的小數點後第i位,w[0]為加權和w 的整數部分。  

1)對應位累加求和

for(t = 0, i = n; i >= 1; i --)

2)調整:從後向前進製

s[i-1]=s[i-1]+s[i]/10;

s[i]=s[i]%10;    

3) 輸出和s與w

std:

:cout <<

"請分別輸入的d,n(用空格隔開):"

; std:

:cin >> d >> n;

for(t=

0,i=n;i>=

1;i--

)// 對s,w分位求和

for(i=n;i>=

1;i--

)// 從後往前逐一進製

現在在之前的問題上再加乙個問題,同時統計:在s(d,n)與w(d,n)的n個小數字中, s與w共有多少個小數字對應位的數字相同?

定義乙個變數m,用來統計s與w對應位相同的個數,迴圈遍歷陣列s和w,在迴圈中判斷s[i]與w[i]是否相等,如果相等m自增一。

for

(m =

0, i =

1; i <= n; i++

)// 比較並統計s與w數字相同的位數

}

下面是整個程式的完整**。

#include

//非精確計算

void sum_****** (

) std:

:cout <<

"s("

<< d <<

","<< n <<

")="

<< s <<

"\n"

; std:

:cout <<

"w("

<< d <<

","<< n <<

")="

<< w <<

"\n";}

//精確計算

void sum_strict (

), w[

100]=;

std:

:cout <<

"請分別輸入的d,n(用空格隔開):"

; std:

:cin >> d >> n;

for(t=

0,i=n;i>=

1;i--

)// 對s,w分位求和

for(i=n;i>=

1;i--

)// 從後往前逐一進製

for(m =

0, i =

1; i <= n; i++

)// 比較並統計s與w數字相同的位數

} std:

:cout <<

"s("

<< d <<

","<< n <<

")="

<< s[0]

<<

".";

// 輸出s

for(

int i =

1; i <= n; i++

) std:

:cout <<

"\n"

; std:

:cout <<

"w("

<< d <<

","<< n <<

")="

<< w[0]

<<

".";

// 輸出w

for(

int i =

1; i <= n; i++

) std:

:cout <<

"\n"

; std:

:cout <<

"s與w數字相同的位數數目 = "

<< m <<

"\n";}

intmain()

陣列求和問題

problem description 給定乙個長度為n的陣列,從這個陣列裡面隨機從前往後取m個數,使得這m個數的和是s,並且這m個數每相鄰的兩個數的下標相差為p。input 首先是乙個整數t,表示有t組資料,每組資料首先是四個整數,n 1 n 100000 m 1 m n s 0 s 10 9 p...

數列求和問題

problem description 數列的定義如下 數列的第一項為n,以後各項為前一項的平方根,求數列的前m項的和。輸入 輸入資料有多組,每組佔一行,由兩個整數n n 10000 和m m 1000 組成,n和m的含義如前所述。輸出 對於每組輸入資料,輸出該數列的和,每個測試例項佔一行,要求精度...

素數求和問題

描述 現在給你n個數 0 輸入 第一行給出整數m 0 輸出每組測試資料結果佔一行,輸出給出的測試資料的所有素數和 樣例輸入 3 51 2 3 4 5 811 12 13 14 15 16 17 18 1021 22 23 24 25 26 27 28 29 30 樣例輸出 10 4152 解題思路 ...