승형님의 블로그
백준 15948, 간단한 문제 본문
https://www.acmicpc.net/problem/15948
15948번: 간단한 문제
자연수 $n$, $m$과 자연수 수열 $A_1, A_2, \cdots, A_m$이 주어졌을 때, 다음 등식을 만족하는 자연수 수열 $B_1, B_2, \cdots, B_m$을 구하라. \[1 + \frac{2^m - 1}{n} = \frac{(A_1 + B_1)(A_2 + B_2)\cdots(A_m + B_m)}{B_1B_2\cdots
www.acmicpc.net
요약
수 N과 M, 길이가 M인 수열 A가 주어졌을 때, 주어진 수식을 만족하는 수열 B를 구하라.
N의 기우성에 따라 다른 처리를 통해 M을 1씩 줄여나갈 수 있다.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
ll N, M;
ll arr[55];
ll ans[55];
ll p[55];
ll f(ll n, ll k) {
if (k == 0) return 1;
ll ret = f((n + 1) / 2, k - 1);
if (n % 2 == 0) ans[k] = n + p[k] - 2;
else ans[k] = n;
ret /= ans[k];
ret *= (1 + ans[k]);
return ret;
}
void solve() {
cin >> N >> M;
for (int i = 1; i <= M; i++) cin >> arr[i];
f(N, M);
for (int i = 1; i <= M; i++) cout << ans[i] * arr[i] << " ";
return;
}
int main(void) {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
int t = 1;
p[0] = 1;
for (int i = 1; i < 55; i++) p[i] = p[i - 1] * 2;
//cin >> t;
while (t--) solve();
return 0;
}
'Problem Solving > 백준' 카테고리의 다른 글
백준 26969, Bribing Friends (2) | 2023.08.15 |
---|---|
백준 26966, Breakdown (0) | 2023.08.15 |
백준 26971, Strongest Friendship Group (0) | 2023.08.11 |
백준 19644, 좀비 떼가 기관총 진지에도 오다니 (1) | 2022.12.22 |
백준 2589, 보물섬 (0) | 2022.12.20 |
Comments