題目敘述
請實作一程式,此程式可以要求使用者輸入 N 組資料,每一組資料的格式如下所示:
每組的資料格式
O 為指令動作,只能是1或2。當O是1時,假設N1和N2的中最小值為MIN、最大值MAX,請輸出從MIN到MAX範圍內的整數和,包含MIN及MAX。 當O是2時,請輸出從MIN到MAX範圍內的整數乘積,包含MIN及MAX。
答題思路
可以考慮使用numeric 函式庫進行連續加法以及乘法。
連續加法
1
2
3
4
5
6
7
|
#include <numeric>
int main() {
// computing its sum
cout << accumulate(array, array+size, 0) << endl;
return 0;
}
|
連續乘法乘法
1
2
3
4
5
6
7
8
9
|
#include <numeric>
int main() {
// factorial by assigning a lambda function
cout << accumulate(array, array+size, 1, [](int x, int y) {
return x * y;
}) << endl;
return 0;
}
|
參考答案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
for(int i=0; i<n; i++) {
int o, n1, n2, sum=0, product=1;
cin >> o >> n1 >> n2;
int minma = min(n1, n2);
int maxma = max(n1, n2);
if(o == 1) {
for(int j=minma; j<=maxma; j++)
sum += j;
cout << sum << endl;
}
else if(o == 2) {
for(int j=minma; j<=maxma; j++)
product *= j;
cout << product << endl;
}
}
return 0;
}
|