Notice
Recent Posts
Recent Comments
Link
250x250
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

피너클의 it공부방

백준 1094 막대기 (c++) : 피너클 본문

백준

백준 1094 막대기 (c++) : 피너클

피너클 2024. 11. 6. 12:00
728x90
반응형

https://www.acmicpc.net/problem/1094

 

수학문제다.

우리가 만들수 있는 막대기의 길이는 64 32 16 8 4 2 1 즉 2의 제곱숫자들이다.

이 숫자들로 x길이의 막대기를 만들어야한다.

 

	int s = 64;
	int ans = 0;
	while (x > 0) {
		if (x >= s) {
			x -= s;
			ans++;
		}
		s /= 2;
	}
	cout << ans << endl;

x를 계속해서 뺀다.

64보다 크거나 같으면 64로 빼고 

32보다 크거나 같으면 32로 빼고

이를 반복하다보면 결국 x는 0이 되고 반복문은 종료된다.

뺀 횟수를 ans에 넣고 마지막에 ans를 출력하면 된다.

 

#include <iostream>

using namespace std;

int x;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> x;

	int s = 64;
	int ans = 0;
	while (x > 0) {
		if (x >= s) {
			x -= s;
			ans++;
		}
		s /= 2;
	}
	cout << ans << endl;
}

전체코드다.

728x90
반응형
Comments