問題描述:
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 解題思路 ...