koenjazh-CNfresde
짬뽕얼큰하게의 맨땅에 헤딩 :: 짬뽕얼큰하게의 맨땅에 헤딩

피보나치 90번째 값이 int형이 넘어갈 줄 몰랐다.

틀렸습니다를 확인 한 후 범위넘어가는지 궁금하여 90을 넣어보니 넘어갔다.

유의하자.. 더 깊게 생각하자..


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstdio>
#include <algorithm>
using namespace std;
long long arr[1001];
long long fibo(int n){
  if(n == 0return 0;
  if(n == 1return 1;
  long long& ret = arr[n];
  if(ret != 0return ret;
  return ret = fibo(n - 1+ fibo(n - 2);
 
}
 
int main(void){
  int N;
  scanf("%d"&N);
 
  printf("%lld", fibo(N));
 
}
 
cs


'알고리즘' 카테고리의 다른 글

백준(BOJ) 2581 소수  (0) 2018.11.29
백준(BOJ) 1316 그룹 단어 체커  (0) 2018.11.29
비트연산 공부하기  (0) 2018.11.26
비트연산 실수하기 쉬운것들  (0) 2018.11.26
백준(BOJ) 1002 터렛  (0) 2018.11.26
블로그 이미지

짬뽕얼큰하게

,

1. 공집합 꽉 찬 집합 구하기

0 ~ 19 가 집합의 크기일 경우

unsigned int a = (1 << 20) - 1;


2. 원소 추가

15번째 원소 추가

a |= (1 << 15)



3. 원소의 포함 여부 확인

15번째 원소가 켜져있는지 확인(켜져있으면 1이아니라 1<<15의 값이 된다.)

if(a & (1 << 15)) 


4. 원소의 삭제

15번째 원소 삭제

a &= ~(1<<15);


5. 원소의 토글

15번째 원소 토글

a ^= (1 << 15);


6. 두집합의 합집합, 교집합, 차집합, 교집합을 제외한 여집합

a | b, a & b, a & ~b, a ^ b




7. 집합의 크기구하기

int bitCount(int a){

if(a == 0) return 0;

return a % 2 + bitCount(a >>1 );

}



8. 최소 원소 찾기

int a = 1 << 3;

a |= 1 << 5;

int m = a & -a;

printf("%d", m);   -> 8


9. 최소 원소 지우기

int a = (1 << 3);

a &= (a - 1);


10. 모든 부분집합 순회

for(int subset = pizza; subset; subset =((subset - 1) & pizza){


}


-> 공집합은 방문하지 않는다..



11. 2의 n승으로 나눌경우, 쉬프트 연산을 활용하자

a = a/8   -> a = a >> 3;


12. 2의 n승으로 %연산을 할 경우, 앤드 연산을 활용하자

a = a% 8  -> a &= (8 - 1)



JM북 공부중.




'알고리즘' 카테고리의 다른 글

백준(BOJ) 1316 그룹 단어 체커  (0) 2018.11.29
백준(BOJ) 2748 피보나치 수 2  (0) 2018.11.29
비트연산 실수하기 쉬운것들  (0) 2018.11.26
백준(BOJ) 1002 터렛  (0) 2018.11.26
백준(BOJ) 2442 별찍기-5  (0) 2018.11.26
블로그 이미지

짬뽕얼큰하게

,

1. 연산자 우선순위

비트연산의 우선순위는 ==, != 연산자보다 낮다.

따라서 비트연산에는 괄호를 꼭 해주는 습관을 해줘야한다.

 a & 1 == b  이 연산은 1 == b를 먼저 수행하고 a & 1 을 수행한다.



2. 연산자 오버플로우

64비트 자료형을 사용할 경우 unsigned long long a;

a |= (1 << 60) 을 하게되면 원하는 값과 다른 결과가 나오게 된다.

1은 32비트 정수형이기때문에 60 만큼 쉬프트하게되면 0이된다.

따라서 1ull 로 정수임을 꼭 알리는 코딩을 하자.


3. 부호

부호가 있는 자료형을 선언할 경우 쉬프트로 부호비트를 킬 수 있다. 음수를 오른쪽으로 쉬프트할경우 1이 채워지는 버그가 생길 수 있다. 조심하자!


 by JM북

'알고리즘' 카테고리의 다른 글

백준(BOJ) 2748 피보나치 수 2  (0) 2018.11.29
비트연산 공부하기  (0) 2018.11.26
백준(BOJ) 1002 터렛  (0) 2018.11.26
백준(BOJ) 2442 별찍기-5  (0) 2018.11.26
백준(BOJ) 1026 보물  (0) 2018.11.26
블로그 이미지

짬뽕얼큰하게

,