본문 바로가기

수학159

[백준] 2331번 : 반복수열 (C++) 2331번 : 반복수열 문제 ) 다음과 같이 정의된 수열이 있다. D[1] = A D[n] = D[n-1]의 각 자리의 숫자를 P번 곱한 수들의 합 예를 들어 A=57, P=2일 때, 수열 D는 [57, 74(=52+72=25+49), 65, 61, 37, 58, 89, 145, 42, 20, 4, 16, 37, …]이 된다. 그 뒤에는 앞서 나온 수들(57부터가 아니라 58부터)이 반복된다. 이와 같은 수열을 계속 구하다 보면 언젠가 이와 같은 반복수열이 된다. 이때, 반복되는 부분을 제외했을 때, 수열에 남게 되는 수들의 개수를 구하는 프로그램을 작성하시오. 위의 예에서는 [57, 74, 65, 61]의 네 개의 수가 남게 된다. 입력 : 첫째 줄에 A(1 ≤ A ≤ 9999), P(1 ≤ P ≤ 5.. 2023. 2. 22.
[백준] 1748번 : 수 이어 쓰기 1 (C++) 1748번 : 수 이어 쓰기 1 문제 ) 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다. 1234567891011121314151617181920212223... 이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. 출력 : 첫째 줄에 새로운 수의 자릿수를 출력한다. 풀이) 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 32 33 34 35 36 37 38 39 40 41 #include #include #include using namespace std;.. 2023. 2. 20.
[백준] 1755번 : 숫자놀이 (C++) 1755번 : 숫자놀이 문제 ) 79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다. 문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다. 입력 : 첫째 줄에 M과 N이 주어진다. 출력 : M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다. 풀이) 숫자를 문자로 입력 받은 뒤 해당 숫자에 따라 단어를 따로 생성해서 비교해주었다. 1 2 3 4 5 6 7 8 9 10.. 2023. 2. 20.
[백준] 1193번 : 분수 찾기 (C++) 10984번: 내 학점을 구해줘 문제 ) 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 : 첫째 줄에 분수를 출력한다. 풀이) 이 방법은 브루트포스 방법으로 푼 것으로, 만약 X의 크기가 매우 커진다면 시간 초과가 날 것이라 생각한다. 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 32 3.. 2023. 2. 20.