반응형
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 |
댓글