2017高雄市資訊學科能力複賽
數學不好,不知道有什麼數學公式能解決這個問題,如果你是跟我依樣數學不怎麼樣的工程師,請學會觀察,觀察測資與結果的關係。以範例四為例:
s0 + s1 + s2 = 2 0
s0 + s1 + s2 + s3 = 2 1
s0 + s1 + s2 + s3 + s4 = 3 2
s1 + s2 + s3 + s4 + s5 = 2 3
s2 + s3 + s4 + s5 + s6 = 3 4
s3 + s4 + s5 + s6 = 2 5
s4 + s5 + s6 = 2 6
S0代表第一隻細菌發出的光強度,如果想算出所有的細菌的加總,就是2 + 2 = 4如下圖。
故程式碼如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n, m, k;
cin >> n >> m >> k;
vector<int> v;
v.assign(n, 0);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
long long sum = 0;
for (int i = 0; i <= k; i++) {//可接受的起點,超過K就取不到第一隻細菌
int j = i;
sum = 0;
for (j = j; j < n - k - 1;) {
sum += v[j];
j += 2 * k + 1;//
}
if (j == n - 1 || (j+k > n and j < n)) {
sum += v[j];
cout << sum << endl;
break;
}
}
}
如果還是不清楚請在下面留言,或是EMAIL我,我會一一回覆。
沒有留言:
張貼留言