fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 7956 (JAVA) Liczby piwne
최초 업로드: 2025-08-23 02:44:15
최근 수정 시간: 2025-08-23 02:44:40
게시자: rlatjwls3333
카테고리: 백준
조회수: 6
# [Silver I] Liczby piwne [문제 링크](https://www.acmicpc.net/problem/7956) ## 문제 설명 <p>Podczas pewnej wizyty w pubie, grupa informatyków postanowiła liczyć wypite kufle piwa. Szybko okazało się, że zostawianie na stole pustego kufla po każdym piwie powoduje kłopoty z ilością miejsca i dalszą dystrybucją napoju. Po krótkim namyśle zgromadzeni postanowili przejść na zapis binarny wykorzystując dwa możliwe ustawienia kufla na stole: ⊔,⊓. Taka metoda spowodowała znaczne zmniejszenie liczby kufli zużywanych do zapisu. Pojawił się jednak nowy problem. Osoba zapisująca liczbę wypitych piw z uwagi na gwar rozmów i gorącą atmosferę dyskusji bardzo często zapominała, którym ustawieniem kufla oznaczała 1 z zapisu binarnego. Ponadto zdarzało się również zapomnieć, czy liczba została zapisana na stole od prawej do lewej czy od lewej do prawej... Po krótkim zastanowieniu stwierdzono jednak, że niektóre liczby wypitych piw po zapisaniu kuflami dają się jednoznacznie odtworzyć nawet z pominięciem tych dwóch informacji. Informatycy nazwali je liczbami piwnymi. Pomóż im ustalić jakie liczby jest bezpiecznie ustawiać z kufli!</p> ## 입력 <p>Pierwsza linia wejścia zawiera małą liczbę całkowitą z – liczbę zestawów danych występujących kolejno po sobie. Opis jednego zestawu jest następujący:</p> <p>Składa się on z jednej liczby całkowitej n (1 ≤ n ≤ 10<sup>1000</sup>).</p> ## 출력 <p>Dla każdego zestawu danych wypisz TAK jeśli liczba podana w zestawie jest piwna, w przeciwnym wypadku wypisz NIE.</p> ## 풀이 #### 앞 / 뒤가 완전히 똑같거나 (palindrome), 완전히 다른지만 (anti-palindrome) 확인하면 되는 문제입니다. ``` java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.math.BigInteger; public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { int z = Integer.valueOf(br.readLine()); while(z-->0) solve(); bw.close(); } // end of main public static void solve() throws IOException { String binaryString = new BigInteger(br.readLine().trim()).toString(2); int diff=0; for(int i=0;i<(binaryString.length()+1)/2;i++) { if(binaryString.charAt(i)!=binaryString.charAt(binaryString.length()-1-i)) { diff++; } } if(diff==0 || diff==(binaryString.length()+1)/2) bw.write("TAK\n"); else bw.write("NIE\n"); } // end of solve } // end of Main ```