피너클의 it공부방
백준 1094 막대기 (c++) : 피너클 본문
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
반응형
'백준' 카테고리의 다른 글
백준 1253 좋다 (c++) : 피너클 (0) | 2024.11.13 |
---|---|
백준 15661 링크와 스타트 (c++) : 피너클 (0) | 2024.11.07 |
백준 11723 집합 (c++) : 피너클 (0) | 2024.11.05 |
백준 2902 KMP는 왜 KMP일까? (c++) : 피너클 (0) | 2022.10.07 |
백준 10974 모든 순열 (c++) : 피너클 (0) | 2022.10.07 |
Comments