2017年12月16日 星期六

[ITSA Exam.60] Problem 3. 吃麵包(C++)

Problem 3. 吃麵包
(Time Limit: 3 seconds)
問題描述 :
N 個麵包在你面前排成一排,每個麵包都有不同的飽足程度,你想知道把其中某一段的麵包吃掉會達到多少飽足度。

輸入說明:

第一行輸入一正整數 S(1≤S≤10),表示共有 S 組測資,每組測試資料的開頭會有兩個正整數 N, M (1≤N , M ≤100,000)N 代表麵包的總數量, M 代表欲測試資料的數量,接下來一行有 N 個不超過 1,000 的正整數,依序代表每個麵包的飽足度,接下來 M 行每行有兩個數字 QR (1 ≤ Q ≤ R ≤ N ),代表你想要吃掉第 Q 個到第 R 個麵包。

輸出說明:

對每組測資輸出 M 行,代表吃完每組麵包的總飽足程度。

範例:


Sample Input:
Sample Output:
1
3 3
1 2 3
1 3
1 2
2 3
6
3
5

說明:

依題目命名變數,依範例的測資為例來解釋題目
s = 1,代表幾組測資(重複3 3 1 2 3 1 3 1 2 2 3這些位置的測資)
N = 3,代表麵包的總數量,所以有三個麵包(1 2 3)的飽足感
第一個麵包的飽足感=1
第二個麵包的飽足感=2
第三個麵包的飽足感=3
M = 3,代表欲測試資料的數量(1 3,1 2,2 3)
第一筆測資(1 3):代表第一個麵包到第三個麵包的飽足感總和=1+2+3=6
第二筆測資(1 2):代表第一個麵包到第二個麵包的飽足感總和=1+2=3
第三筆測資(2 3):代表第二個麵包到第三個麵包的飽足感總和=2+3=5


  1. #include <iostream>  
  2. using namespace std;  
  3.    
  4. int main() {  
  5.     // Problem 3. 吃麵包  
  6.     int s;//測資數  
  7.     cin >> s;  
  8.     for(int i = 0 ;i < s;i++)  
  9.     {  
  10.         int n, m;  
  11.         //n = 麵包的總數量  
  12.         //m = 欲測距離的數量  
  13.         cin >> n >> m;  
  14.         int sat[n];//Satiety飽足感  
  15.         int q, r;  
  16.         int sum = 0;  
  17.         //從第q個吃到第r個麵包  
  18.         //1 3 => 第1,2,3個麵包  
  19.         for(int j = 0;j < n;j++)  
  20.         {  
  21.             cin >> sat[j];  
  22.         }  
  23.         for(int j = 0;j < m;j++)  
  24.         {  
  25.             cin >> q >> r;  
  26.             for(int k = q-1;k <= r-1;k++)  
  27.             {  
  28.                 sum = sum + sat[k];  
  29.             }  
  30.             cout << sum << endl;  
  31.             sum = 0;  
  32.         }  
  33.     }  
  34.     return 0;  
  35. }  

沒有留言:

張貼留言