일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 백준
- SSAFY 7기
- 코딩테스트
- 카카오
- 프로그래머스
- 인앱결제
- 우테코
- java 객체지향 프로그래밍
- IT 트렌드
- 네트워크 관리사 2급 실기
- SSAFY
- 신문 스크랩
- it 이슈
- 네트워크 관리사
- 코딩테스트 연습
- KT
- python
- SSAFYcial
- 구글
- html
- IT 동향
- it 뉴스
- Java
- 코테
- 리얼클래스
- 백준위
- 네트워크 관리사 2급
- 싸피
- 신문스크랩
- 싸피셜
Archives
- Today
- Total
개발자일걸요..?
1629번 곱셈 본문
728x90
반응형
문제링크 : www.acmicpc.net/problem/1629
1629번: 곱셈
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
www.acmicpc.net
<알고리즘>
1) 함수를 이용하여 지수가 0혹은 1이 될때까지 반복해 2로 나누기
2) 지수가 0이면 1, 1이면 밑을 C로 나눈 값을 return
3) 지수가 그 이상일 경우 홀수인지 짝수인지를 구분하여 pow 함수처럼 곱셈하여 return
메모리 : 2016KB 시간 : 0ms
#include<iostream>
using namespace std;
long long int divisionAlgo(long long int A, long long int B, long long int C) {
if (B == 0) {
return 1;
}
else if (B == 1) {
return A%C;
}
long long int temp = divisionAlgo(A, (int)(B/2), C);
//B가 짝수인 경우
if (B % 2 == 0) {return (temp*temp) % C;}
//B가 홀수인 경우
else { return (A*((temp*temp)%C)) % C; }
}
int main() {
long long int A = 0;
long long int B = 0;
long long int C = 0;
cin >> A >> B >> C;
cout << divisionAlgo(A, B, C) << "\n";
return 0;
}
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
1904번 01타일 (0) | 2021.03.03 |
---|---|
9184번 신나는 함수 실행 (0) | 2021.03.03 |
1780번 종이의 개수 (0) | 2021.03.01 |
1992번 쿼드트리 (0) | 2021.03.01 |
2630번 색종이 만들기 (0) | 2021.03.01 |
Comments