자연수 n이 주어졌을 때 n보다 작거나 같은 모든 자연수의 합을 반환하는 함수 size_t f(size_t n)를 작성하라.
예를 들면 f(0)은 0, f(1)은 1, f(2)는 3, f(10)은 55, f(256)은 32896을 반환해야 한다.
자연수 n이 주어졌을 때 n보다 작거나 같은 모든 자연수의 합을 반환하는 함수 size_t f(size_t n)를 작성하라.
예를 들면 f(0)은 0, f(1)은 1, f(2)는 3, f(10)은 55, f(256)은 32896을 반환해야 한다.
def A(n): return int(n*n/2+n/2)
데이터의 내부 표현에 대한 이해가 없는 프로그래머가 작성하는 전형적인 잘못된 코드의 예. Python의 float 자료형은 보통 IEEE 754 binary64 형식을 기반으로 하고 있으므로 최대 53비트 길이의 정수밖에 저장할 수 없는 반면 int 자료형은 범위 제한이 없기 때문에 float를 사용하지 않을 수 있는 이런 코드는 float를 사용하지 않는 것이 맞다. n * (n + 1) // 2라고 짜면 100억을 넣었을 때 올바른 값이 나오는 반면 float로 계산하고 int로 변환하면 부정확한 값이 나옴.
size_t에 float, double 들어가도 아무 문제 없는거지?
C/C++ 표준에서 size_t는 최소 16비트의 부호 없는 정수형이고, sizeof 연산자의 결과나 각종 라이브러리 함수의 인자/반환값 자료형으로 사용됨 (예를 들면 malloc의 인자, strlen의 반환값). 아무튼 float나 double일 수는 없다.