반응형
1748번: 수 이어 쓰기 1
첫째 줄에 N(1≤N≤100,000,000)이 주어진다.
www.acmicpc.net
풀이 1 )
- 1~9까지는 한 자리
- 10~99까지는 두 자리
- 100~999까지는 세 자리
- ...
- 10^n~10^(n+1)-1까지는 n+1 자리
#include <iostream>
using namespace std;
int digit(int n){
int ret = 1;
while(n/=10)
ret++;
return ret;
}
int pow(int x, int n){
if(n == 0)
return 1;
return x*pow(x, n-1);
}
int main(void){
int n;
cin >> n;
int len = digit(n);
if(len == 1){
cout << n << '\n';
return 0;
}
int ans = 0;
for(int i = 1; i < len; ++i)
ans += i*(pow(10, i)-pow(10, i-1));
ans += len*(n-pow(10, len-1)+1);
cout << ans << '\n';
}
풀이 2 )
- 1의 자리 숫자는 1~n까지 모두 가지고 있으므로 총 n-1+1개
- 10의 자리 숫자는 10~n까지 가지고 있으므로 n-10+1개
- 100의 자리 숫자는 100~n까지 가지고 있으므로 n-100+1개
- ...
- 10^i 자리 숫자는 10^i~n까지 가지고 있으므로 n-10^i+1개
#include <iostream>
using namespace std;
int main(void){
int n, ans = 0;
cin >> n;
for(int i = 1; i <= n; i *= 10)
ans += n-i+1;
cout << ans << '\n';
return 0;
}
반응형
'문제풀이 > 백준' 카테고리의 다른 글
[C++] 백준 - 1027 : 고층 건물 (0) | 2020.12.19 |
---|---|
[C++] 백준 - 4375 : 1 (0) | 2020.12.12 |
[C++] 백준 - 5373 : 큐빙 (0) | 2020.12.09 |
[C++] 백준 - 14502 : 연구소 (0) | 2020.12.09 |
[C++] 백준 - 9663 : N-Queen (0) | 2020.12.09 |