2로 몇 번 나누어질까
링크: https://www.acmicpc.net/problem/1047
1차 시도 실패
입력받은 사이 수를 2진법으로 변환 후 우측에서부터 체크한다.
가장 먼저 1이 나온 지점이 문제가 원하는 약수이다.
이를 더한다.
- 미해결 코드
#include<iostream> #include<cmath> using namespace std; #define maxNum 1000000000000000 long long unsigned int a, b; long long unsigned int sum = 0; long long unsigned int i = 0; int main() { cin >> a >> b; for (i = a; i <= b; i++) { int count = 0, temp = i; while (!(temp % 2)) { count++; temp /= 2; } sum = (long long unsigned int)sum + pow(2, count); } cout << sum; return 0; }
'ProblemSolving' 카테고리의 다른 글
[BOJ] 1644_소수의 연속합 (0) | 2021.03.08 |
---|---|
[BOJ] 1737_Pibonacci (0) | 2021.03.06 |
[BOJ] 1715_카드 정렬하기 (0) | 2021.03.04 |
[BOJ] 2697_다음수 구하기 (0) | 2021.03.04 |
[BOJ] 1083_소트 (0) | 2021.03.01 |
최근댓글