白駿Baekjoon 1094号棍子-JAVA
https://www.acmicpc.net/problem/1094
質問する
チミンには長さ64 cmの棒がある.ある日、彼は長いXcmの棒がほしいです.志敏は元の棒をもっと小さい棒に切って、接着剤でくっついて、長いXcmの棒を作りたいと思っていました.
棒を切るのが一番簡単な方法は半分に切ることです.志敏は以下の過程で棒を切るつもりだ.
志敏のすべての棒を合わせます.最初は64センチの棒しかありませんでした.このとき、和がXより大きい場合は、次の手順を繰り返します.
持ち棒の中で最も短い長さを半分に切ります.
上から切り取ったレバーから1本を取り除き、残りのレバーの長さの和がX以上であれば、上から切り取ったレバーから1本を取り除く.
今、残りの棒を接着剤でくっつけてXcmにします.
Xが与えられた場合、上記の手順を経た場合、接着剤で何本貼り付けてXcmを作成できるかを決定するプログラムを作成します.
入力
1行目はXです.Xは64以下の自然数である.
しゅつりょく
問題の処理をすれば、出力は接着剤でロッドを何本かくっつけてXcmを作ることができます.
入力例1説明 最初はarraylistを使用してすべてのバーの長さを格納しようとしたが、明確な基準でバーを分割した.
その基準に従ってn回の演算を行うとそのバーの大きさがわかる. xの値は0と比較する、whileサイクル開始後、ストリップのw+(プールに貼り付ける回数) を毎回減少させる.
質問する
チミンには長さ64 cmの棒がある.ある日、彼は長いXcmの棒がほしいです.志敏は元の棒をもっと小さい棒に切って、接着剤でくっついて、長いXcmの棒を作りたいと思っていました.
棒を切るのが一番簡単な方法は半分に切ることです.志敏は以下の過程で棒を切るつもりだ.
志敏のすべての棒を合わせます.最初は64センチの棒しかありませんでした.このとき、和がXより大きい場合は、次の手順を繰り返します.
持ち棒の中で最も短い長さを半分に切ります.
上から切り取ったレバーから1本を取り除き、残りのレバーの長さの和がX以上であれば、上から切り取ったレバーから1本を取り除く.
今、残りの棒を接着剤でくっつけてXcmにします.
Xが与えられた場合、上記の手順を経た場合、接着剤で何本貼り付けてXcmを作成できるかを決定するプログラムを作成します.
入力
1行目はXです.Xは64以下の自然数である.
しゅつりょく
問題の処理をすれば、出力は接着剤でロッドを何本かくっつけてXcmを作ることができます.
入力例1
23
サンプル出力14
入力例232
サンプル出力21
入力例364
サンプル出力31
入力例448
サンプル出力42
import java.util.Scanner;
public class Main {
@SuppressWarnings("resource")
public static void main(String args[]) {
double bar = 64;
double x = new Scanner(System.in).nextDouble();
int w = 0;
while (x > 0) {
if (bar > x)
bar /= 2;
else {
x -= bar;
w++;
}
}
System.out.println(w);
}
}
その基準に従ってn回の演算を行うとそのバーの大きさがわかる.
Reference
この問題について(白駿Baekjoon 1094号棍子-JAVA), 我々は、より多くの情報をここで見つけました https://velog.io/@chamominedev/baekjoon-java-1094-막대기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol