알고리즘 문제
[C/C++ 백준 1748번] 수 이어 쓰기 1 (Silver 3)
새파란 공대생
2020. 7. 22. 13:01
https://www.acmicpc.net/problem/1748
1748번: 수 이어 쓰기 1
첫째 줄에 N(1≤N≤100,000,000)이 주어진다.
www.acmicpc.net
처음에는 그냥 for문을 N까지 돌려도 되지 않을까 했었는데, N 범위가 꽤 커서 N 앞까지는 미리 계산해주어야 한다.
코드는 다음과 같다.
#include <cstdio>
#include <cmath>
using namespace std;
int main(void){
long long int N, save,ans=0,length=0;
scanf("%lld", &N);
save = N;
while(N){
N = N/10;
length++;
}
for(int i=1; i<length; i++)
ans += 9*i*(int)pow(10.0,(double)(i-1));
ans += length * (1 + save - (int)pow(10.0,(double)(length-1)));
printf("%d",ans);
}