質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

2回答

687閲覧

javaの質問です。

pooh37719042

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/12/16 16:31

編集2021/12/17 08:45

問題
縦と横の長さがそれぞれ1の正方形のブロック片をN個持っています。これらの
N個の正方形のブロック片から好きな数使用してパネルを作ることにしました。
例えば、N=20個のブロック片を持っていた時、12個のブロック片を選んで使用して、縦に3個横に4個使った3×4の大きさのパネルや、縦に2個横に6個使った2×6の大きさのパネルなどを作ることができます。
ただし、3×3のような縦と横に同じだけブロック片を使ったパネルはできません。

一行目に、ブロック片の数Nが与えられる。
一行で、N個のブロック片を好きな数選んだとき、作ることのできる長方形のパネルの種類の数を出力せよ。

という問題になっています。よろしくお願いします。

制約
N: 整数  1≦N≦10の6乗

例:入力値6の場合
1×2 1×3 1×4 1×5 1×6 2×1 2×3 3×1 3×2 4×1 5×1 6×1の12種類なので
12と出力する

試したコード
import java.util.*;

public class Main {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
int count=0;
for(int i=1;i<=s;i++){
for(int r=1;r<=(s-i);r++){
if(i!=r){
count++;
}
}
}
System.out.println(count);
}
}
〇入力値:6 出力値:12
〇入力値:1 出力値:0
×入力値:32 出力値:480(正解は114)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2021/12/16 22:34

コードは"<code>"または"<コード>"のボタンを押して出てくるやつの中に書きましょう。
BeatStar

2021/12/16 22:37

> 例えば、N=20個のブロック片を持っていた時、12個のブロック片 本当に?
hentaiman

2021/12/17 00:29

イメージできるぐらいに理解するのが大事なので、全く分からんようならN個のブロック買って来て試してみては?本物のレンガやコンクリートでなくてもいいので、幼児用のオモチャのブロック買って試してみましょう 大抵の人なら試せば問題文の意味も理解出来るようになりますよ
Crimson_Tide

2021/12/17 05:58

試したコードで誤りがでたとき、デバッグしましたか?してないならしてください。 >×入力値:32 出力値:480(正解は114) ということは countする際の iとrで想定外の組み合わせがカウントされている、とか重複してカウントされているとか、いくつかの原因の可能性を想像できます。 実際に出力するなり、デバッガ機能を使って確認するなりして想定外の組み合わせが何故出るのか、 プログラムを見直してください。 別のアプローチとして、問題を改めて見返し必要な条件をリストアップしてみてください。 例えばif文の条件となっている i != r とかですね。 その条件式で本当に問題の条件として間違いないか確認してください。 正しい条件を元に実装すれば、うまくいくはずです。 デバッグする気がない、答えだけ欲しいとしたら、推奨されていない質問なので退会をお奨めします。
YT0014

2021/12/17 08:33

タグ「プログラミング言語」は、複数の言語にまたがる質問の為のタグだと思われます。特定の言語でも使われた場合、このサイトの質問の大部分が該当してしまい、存在意義がなくなります。 この質問は、Javaのみで完結しますので、削除してください。
guest

回答2

0

最初に言いますが、入力値6の場合、個数がたまたま一致しているだけで、数えたパターンは間違っています。
1x6は含まれず、2x4が含まれています。

まずは、momon-gaさんの回答のように出力するか、デバッカにて、入力値6のパターンをご確認ください。

また、入力値2の場合もご確認ください。既に誤った出力になっているかと思われます。

そもそも、アプローチが間違えている可能性があります。
問題の前の説明や授業で、再帰という言葉が出ていませんでしたか?
出ているようなら、入力値Nの個数は、入力(N-1)の個数+N個全部使った個数、で計算する必要があります。

投稿2021/12/19 03:15

YT0014

総合スコア1708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問になっていないのですが、何を聞きたいのでしょうか?
デバッグの仕方ならローカル環境で

java

1int s = 32; 2int count = 0; 3for (int i = 1; i <= s; i++) { 4 for (int r = 1; r <= (s - i); r++) { 5 if (i != r) { 6 System.out.println(i + " × " + r); 7 count++; 8 } 9 } 10} 11System.out.println(count);

を実行すれば、デバッガを使わなくても重複されているカウントがわかるはずです。

投稿2021/12/18 18:26

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問