C언어 자료형 정리
백준 20353 Atrium 문제
날먹할 외국어 문제 찾아보다가, 의외로 브론즈 4랭크인 20353번 Atrium 문제에서
10번이나 "틀렸습니다
"를 받아 포스팅한다. (15610번과 같은 문제)
이번 기회에 자료형을 확실히 정리하고 넘어가야겠다..
분명 입력값이 single integer a(1 <= a <= 10^18)로 되어있어
integer? 당연 int지~ 하면서 무지성 답안제출했던게 원인이었다.
int형
4바이트인거는 다 아는데, 이게 몇 자리 수까지 저장할 수 있는지는 헷갈린다.
2의 32승, 이를 십진수로 환산하면 4,294,967,296
.42억
이며 음수도 표현해야 하므로 -21억부터 0, +21억까지 표현 가능하다.
즉 고작 10의 9승
부근까지밖에 표현이 안된다.
따라서 더 큰 수에 대해서는 다른 자료형을 써야 하는데..
unsigned int
얘는 부호정보만 없앤것이라 자리수 똑같이 10의 9승
까지밖에 저장이 안된다.
long int
long
운영체제나 플랫폼마다 크기가 다르다.
윈도우에서는 4바이트
리눅스x86에서는 4바이트, 리눅스x86-64에서는 8바이트
OSX x86에서는 4바이트, OSX x86-64에서는 8바이트
long long int
얘가 8바이트 자료형이다.
2의 64승, 십진수로는 18,446,744,073,709,551,616
한 자리수 더 늘리려면 unsigned long long int
형을 쓸 수 있다.
얼추 10의 17승
까지 표현 가능한 것 같고.
포맷 스트링은 아래와 같이 lli와 llu를 쓰면 된다.
#include<cstdio>
int main() {
long long int a = 123456789012345678;
unsigned long long int b = 1234567890123456789;
printf("%lli\n", a);
printf("%llu\n", b);
}
'CS > Algorithm' 카테고리의 다른 글
[백준 10815] 이분 탐색법(binary search) (0) | 2022.06.24 |
---|---|
[백준 2609] 최대공약수와 최소공배수 (0) | 2022.06.21 |
[백준 11729] 하노이 탑 옮기기(재귀) 문제해석 / 풀이 / 코드 (0) | 2022.06.15 |
[백준 4948] 베르트랑 공준(소수 구하기) 이해하기 / 코드 (0) | 2022.06.13 |
[백준 2447] 별찍기(재귀) 문제이해 / 풀이 / 코드 (0) | 2022.06.13 |
댓글