C++/C++ 알고리즘

백준 1834 나머지와 몫이 같은 수 C++로 구현해보기

kimc 2021. 9. 1. 22:20

```

백준 1834 나머지와 몫이 같은 수 C++로 구현해보기

```

 

이번 글을 통해 배워갈 내용

  1.  백준 1834번 풀이

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

 

1834번: 나머지와 몫이 같은 수

N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.

www.acmicpc.net

 

 

 

백준 1834번 나머지와 몫이 같은 수는

N으로 나누었을 때 나머지와 몫이 같은 가능한 모든 수의 합을 출력하는 문제입니다.

 

예를 들어

 

N이 1 일때 0을 출력

N이 2 일때 3

N이 3 일때 12

N이 4 일때 30

 

입니다.

 

해당 문제를


30분 정도 위에 링크를 방문하셔서 풀어보시고

안풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


문제는 수학문제입니다.

 

더하는 숫자의 법칙이 있습니다.

 

따라서 

 

규격화 하고 공식을 만들면

 

(N + 1) ( 1 + 2 + 3 + 4 ... + (N-1)) 입니다.

 

이를 등차수열 공식까지 적용하면

 

(N+1)(N)(N-1)/2 가 됩니다.

 

이를 코딩하면

전체 코드는 아래와 같습니다.

 

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <algorithm>
#include<numeric>

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

	unsigned long long N;
	std::cin >> N;
	
	if (N == 1)
	{
		std::cout << 0;
	}
	else
	{
		const unsigned long long answer = ((N - 1) * N * (N + 1)) / 2;
		std::cout << answer;
	}
}

 

주의 할 점은 N의 범위가 2 000 000 까지 이기 떄문에

N의 세제곱을 커버 할 수 있는 자료형을 써야 합니다.

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩하시길 바랍니다 ~ :)

 

참조 및 인용

C++ Primer

Introduction to Algorithms


https://codemasterkimc.tistory.com/35

 

C++ 이론을 배울수 있는 곳 정리

개요  C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime

codemasterkimc.tistory.com

 

https://codemasterkimc.tistory.com/50

 

300년차 개발자의 좋은 코드 5계명 (Clean Code)

이번 글을 통해 배워갈 내용  좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋

codemasterkimc.tistory.com

 


 

728x90