https://www.acmicpc.net/problem/1748
문제
1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.
1234567891011121314151617181920212223...
이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1≤N≤100,000,000)이 주어진다.
출력
첫째 줄에 새로운 수의 자릿수를 출력한다.
1~9 는 1개
10~99 는 2개
100~999는 3개
.
.
.
10,000,000 ~ 99,999,999 는 8개
이런식으로 1억은 9개.
import java.util.Scanner;
public class Exam1748 {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int n =sc.nextInt();
long ans =0;
for(int start=1, len=1; start<=n; start*=10, len++) {
int end = start*10-1;
if(end > n) {
end = n;
}
ans += (long)(end-start+1) * len;
}
System.out.println(ans);
}
}
'Algorithm by java' 카테고리의 다른 글
백준 10971번 외판원 순회2 java (0) | 2019.10.21 |
---|---|
백준 10972, 10973 다음순열/이전순열 java (0) | 2019.10.19 |
백준 3085번 사탕 게임 java (0) | 2019.10.16 |
백준 6064번 카잉 달력 java (0) | 2019.09.28 |
백준 1107번 리모컨 java (0) | 2019.09.27 |