본문 바로가기
Study/c,c++

C/C++서 양수 정수 나눗셈 결과의 올림 구하기

by 개발새-발 2021. 3. 1.
반응형

math.h의 ceil을 쓰면 간단하게 구할 수 있지만, 다르게도 한번 해보자.

 

c = (a+b-1)/b;

확인해보자.

#include <cstdio>

int main(void){
	int a[7] = {5,6,7,11,100,65,99};
	int b[7] = {2,2,5,5,5,13,30};

	for(int i=0;i<7;++i){
		int x = a[i],y = b[i];
		int ceiled = (x-1)/y +1;
		printf("Ceiling of %d/%d is %d\n",x,y,ceiled);
	}

}

다음과 같이 출력된다.

Ceiling of 5/2 is 3
Ceiling of 6/2 is 3
Ceiling of 7/5 is 2
Ceiling of 11/5 is 3
Ceiling of 100/5 is 20
Ceiling of 65/13 is 5
Ceiling of 99/30 is 4

 

이는 수학에서 ceil(x/y) = floor((x+y-1)/y)이기 가능하다. 양수 범위에서 C나 C++에서는 실수에서 정수로 형 변환 시에 소수점 범위가 무시되는데, 이때 양수 범위에선 x/y의 올림 값과 (int) (x/y)가 값이 같아지기 때문이다.

반응형

'Study > c,c++' 카테고리의 다른 글

비트마스크  (0) 2021.05.08
비트 연산 기본  (0) 2021.05.05
c++에서 class의 private 멤버를 일반적이지 않은 방법으로 읽기  (0) 2021.04.25
Scanf의 형식지정자에 대하여  (0) 2021.02.26

댓글