알고리즘/알고리즘 문제 풀이
C언어 자릿수 계산
proqk
2016. 3. 31. 23:13
반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h> int main(){ long long a = 0LL; long long b = 10LL; int c = 1; scanf("%lld", &a); while (1){ if (a / b == 0){ break; } c++; b = b * 10; } printf("%d", c); } | cs |
int형을 쓰면 9자리까지밖에 구해지지 않는다.
이건 int형의 최대값(약 21억)을 넘어서는 수가 들어가버려서 생기는 오류인데, long long을 사용해서 간단하게 해결할 수 있다.
참고로 long형도 최대값을 넘는다.
3~4줄에서 long long int형 a, b를 선언하고 초기화 값 뒤에 LL을 붙여 long long형 정수라고 명시해주었다.
6줄에서 long long형이기 때문에 %d가 아닌 %lld로 받아줘야 한다.
출력할 때도 마찬가지다.
8~13줄: 10으로 나누면서 자릿수를 카운트함
반응형