본문 바로가기

Algorithm/Implementation

(C++, Python) - 백준(BOJ) 15818 : 오버플로우와 모듈러

반응형

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

 

15818번: 오버플로우와 모듈러

첫 줄에 연산될 정수의 개수 N(1 ≤ N ≤ 100)과 M(1 ≤ M ≤ 2,147,483,647)이 주어진다. 두 번째 줄에는 N개의 정수 ai (1 ≤ ai ≤ 2,147,483,647)가 한 줄로 주어진다. 

www.acmicpc.net

간단 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

수의 개수 n, modular연산을 할 기준 m, 정답을 출력할 ans, 각 수의 정보를 저장할 nums를 선언해줍니다.

📔 풀이과정

nums에 대해 for loop를 수행하며 공식대로 구현해줍니다. python의 경우 공식을 고려할 필요없이 모두 곱해줍니다.

📔 정답출력

ans를 출력해줍니다.


📕 Code

📔 C++

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, m, ans = 1;
vector <ll> nums;
int main(){
  cin >> n >> m;
  nums.resize(n);
  for(int i = 0; i < n; i++){
    cin >> nums[i];
  }
  for(auto num : nums){
    ans *= (num % m);
    ans %= m;
  }
  cout << ans;
}

📔 Python

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
nums = list(map(int, input().split()))
ans = 1
for i in range(0,n):
  ans *= nums[i]
print(ans%m)

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.