백준 20312번, CPU 벤치마킹 풀이
2020. 12. 11. 14:57ㆍProblem Solving/백준
문제
풀이
CPU $ i + 1$번째의 $ j $행은 CPU $ i $번째 $ j $행의 $ m_{i} $배 입니다.
따라서, $ i + 1 $번째 CPU 행의 합 = ($ i $번째 CPU 행의 합 + 1) * $ m_{i} $이 됩니다.
이전 행의 값을 계산해두면, 하나를 구할 때 $ O(1) $이므로, 모두 다 구해주는데 $ O(N) $이 걸리겠네요.
소스코드
#include <bits/stdc++.h>
#define all(v) v.begin(), v.end()
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vl;
const ll MOD = 1e9 + 7;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
int n; cin >> n;
vl vec(n - 1);
for (auto &i : vec) cin >> i;
ll ans = 0, prev = 0;
for (int i = 0; i < n - 1; i++) {
prev = ((prev + 1) * vec[i]) % MOD;
ans += prev;
ans %= MOD;
}
cout << ans;
}
'Problem Solving > 백준' 카테고리의 다른 글
백준 15918번, 랭퍼든 수열쟁이야!! 풀이 (0) | 2020.12.22 |
---|---|
백준 1644번, 소수의 연속합 풀이 (2) | 2020.12.21 |
백준 5052번, 전화번호 목록 (0) | 2020.12.08 |
백준 5578번, JOI 2009 예선 4번, 薄氷渡り 풀이 (0) | 2020.11.30 |
백준 2146번, 다리 만들기 풀이 (0) | 2020.11.28 |