본문 바로가기

백준/수학

백준 13172 - Σ

728x90
728x90

https://www.acmicpc.net/problem/13172

문제 요약

$N_{i}, \: S_{i}$가 M개 주어지는데 이들을 $a \times (b^{-1} \mod p)$ (p는 소수)의 형태로 바꾸고 그 합의 모듈러를 구하라.

풀이

문제에서 페르마의 소정리를 사용하라고 했으므로 페르마의 소정리를 통해 $N_{i} \mod p$를 구한 뒤 $S_{i}$를 곱하면 된다.

 

문제의 이름처럼 기대값들을 모두 더하는 것을 잊지 말자.

 

전체 코드

더보기
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

#define mod 1000000007

int m;

ll pomod(ll val, int b)
{
    if (b == 1) return val % mod;
    if (b & 1) return pomod(val, b - 1) * val % mod;
    return pomod(val * val % mod, b / 2);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> m;
    ll res = 0;

    for (int i = 0; i < m; ++i)
    {
        ll n, s;
        cin >> n >> s;
        res += s * pomod(n, mod - 2) % mod;
        res %= mod;
    }

    cout << res;
}

728x90
728x90

'백준 > 수학' 카테고리의 다른 글

백준 10736 - XOR삼형제 2  (0) 2021.07.27
백준 4375 - 1  (0) 2021.07.08
백준 11444 - 피보나치 수 6  (0) 2021.06.30
백준 1413 - 박스 안의 열쇠  (0) 2021.01.17
백준 1146 - 지그재그 서기  (0) 2021.01.02