Logo
(追記) (追記ここまで)

15677번 - 문제 하나 풀어볼래?

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB162464128.873%

문제

  • 인섭 : 어떤 문제?
  • 현우 : 11을 11번 쓰려면 몇 글자가 필요할까?
  • 인섭 : 11은 2자리 수니까.. 2 * 11 = 22!
  • 현우 : 틀렸어. 12자리면 충분해. 111111111111을 쓰면 11이 연속된 부분 문자열로 11번 등장하거든.
  • 인섭 : 미안해, 공부할게…
  • 현우 : 그러면, K가 K번 등장하는 가장 짧은 문자열을 내일까지 써오도록 해.

인섭이는 현우가 내준 과제를 시작하려 한다. 하지만 K를 K번 쓰는 작업은 너무 힘든 일이었다. 어떻게 할까 고민하던 중, 인섭이에게 좋은 아이디어가 하나 떠올랐다. K+A (A > 0)가 K+A번 등장하는 문자열을 쓰고, 현우에게 더 큰 수가 더 많이 등장하였기 때문에 원래 과제보다 더욱 어려운 문제를 풀어왔다고 설득하는 것이다. 만약 이 과정에서, 써야 하는 글자수가 L만큼 줄어든다면 인섭이는 L만큼의 만족도를 얻는다.

하지만 인섭이는 현우가 낸 과제를 정확하게 해결하지 않는 데에 양심의 가책을 느낀다. 만약 인섭이가 K를 K번 쓰는 대신 K+A를 K+A번 적는다면, A에 비례하여 양심의 가책을 느끼게 된다. 정확히는, 어떤 상수 C에 대해 C*A만큼의 양심의 가책을 느낀다.

인섭이는 얻은 만족도에서 양심의 가책을 뺀 값을 최대화하려 한다. 이 값이 얼마인지 찾아주도록 하자.

인섭이가 작성할 문자열에는 수가 겹쳐서 등장할 수도 있다. 예를 들어, 문자열 12312312에는 12312가 2번 등장하며, 333333에는 3333이 3번 등장한다.

입력

문제에 설명한 K, C가 공백으로 구분되어 주어진다. (1 ≤ K ≤ 1012, 0 ≤ C ≤ 105)

출력

문제의 정답을 출력한다. 만약 모든 양수 A에 대해 답이 0 이하라면 0을 출력한다.

제한

예제 입력 1

10 2

예제 출력 1

6

힌트

1번 예제에서, 10을 10번 쓰게되면 총 20글자를 써야 한다. 하지만 11을 11번 쓰게되면 총 12글자를 쓰게 되고, 이 경우 만족도는 8, 양심의 가책은 (11-10) * 2가 되어 정답은 8 - 2 = 6 이 된다.

출처

University > 연세대학교 > 2018 연세대학교 컴퓨터과학과 프로그래밍 경진대회 K번

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /