• ベストアンサー

JAVAのプログラミングです

JAVAのプログラミングを教えてください 整数Xの十進表記を1桁右に循環的にシフトした(つまり、最右桁の数字を最左桁の位置に置く)数が、Xの2倍であるような整数Xのうち、最小のものを求めよ。 これをJAVAでプログラミングせよ。とのことです

  • Java
  • 回答数2
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

関数f(X)を次のように定義 1)Xの常用対数Yを求める 2)Xを10で割った余りAを求める 3)Xを10で割った商Bを求める←少数以下を切捨てた整数値 f(X) = A×10の(Y+1)乗 + B Xの最小値は11以上であるはず(でないと循環的にシフト出来ない)ので X=11から1づつ加算して f(X) = X×2 が成立するまで繰り返せばよい。

zogphfydvq
質問者

お礼

丁寧にアルゴリズムをお教えいただいて本当にありがとうございます。おかげで初心者の僕でも一応書けました。

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

とのことです、のでそれをプログラミングすればよろしい。 方法はいくつかあります。 頑張って自分で考えて、わからない個所が来たらここで質問をする。 そのときは、どこまでは理解できてどこで詰まっているか、きっちりと説明を書いてください。 あるいは、自分で作ったものがなぜ正しく動かないか自分なりの考えを述べて、間違った個所を指摘して貰うという方法でも良いです。 あるいは、楽な方法を取りたければ、ソフト開発会社に発注してください。

関連するQ&A

  • javaプログラミングについて!

    ただいまjavaプログラミングの勉強をしております。 そこで数字を複数回入力させ、-1を入力すると終了し、その数字の最大、最小、平均を出力するプログラムを作っているのですが、 public static void main(String[] args) { int max = 0; int min = 100; int sum = 0; int count = 0; Scanner sc = new Scanner(System.in); System.out.println("正の整数を入力してください"); int n = sc.nextInt(); while (num01 != -1){ System.out.println("正の整数を入力してください"); sum += n; n = sc.nextInt(); count++; if(max < n) max = n; if(min > n) min = n; } System.out.println("入力された整数の最大は" + max); System.out.println("入力された整数の最小は" + min); System.out.println("入力された整数の平均は" + sum/count); } } このようなプログラミングが作れたのですが、たとえば30と10を入力したときに 最大10 最小-1 平均20 と表示されてしまいます。色々試行錯誤してみたのですが、改善されなかったため質問させて頂きました。原因と解決方法を教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • Javaについての質問です

    javaのプログラミングを練習していたのですが 1,System.in,System.outはどのようなオブジェクトクラスかを表示するプログラムを作れ 2,整数の四則演算を行うプログラムを書け 実行例 C:¥4>java K13_4 2 + 3 2+3=5 C:¥4>java K13_4 2 - 3 2-3=-1 C:¥4>java K13_4 2 x 3 2x3=6 C:¥4>java K13_4 20 / 3 20/3=6 がどうしても作れません. どなたかプログラムを教えて頂けないでしょうか? よろしくお願い致します.

  • プログラミングがわかりません

    1.多倍長数で表現した整数aとint型で表現した整数xを乗算し、その結果をaに格納するプログラムを作れ。 #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 0, 0, 1, 0, 2, 4, 6, 5, 5, 3, 6}; int x = 512; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(c) <-- 多倍長数(a) * int型(x)*/ (ア) 出力省略 return 0; } 実行結果 a = 52462354432 2.多倍長数を用いて1から80までの各整数の階乗を計算し、正しい値を表示するプログラムを作れ。 注意 80の階乗を表現するためには、少なくとも119桁の整数を格納できる多倍長数を用いなければならない。 実行結果 1! = 1 2! = 2 3! = 6 ・・・ 3.多倍長数で表現した整数aとint型で表現した整数xで除算し、その結果をaに格納するプログラムを作れ。 aがxで割り切れない場合に生じるあまりは使用せずに捨ててもよい。 除算の途中で現れる整数はint型で表現できる範囲であることを仮定してもよい。 ソースコード #include<stdio.h> #define KETA 12 int main(void){ int a[KETA] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1}; int x = 365; /*必要な変数があれば適宣宣言しなさい*/ /*多倍長数(a) <-- 多倍長数(a) ÷ int型(x)*/ (ア) return 0; } 実行結果 a = 33823777 2はまったくわかりません 1,3の出力はわかるのですが、計算過程がわかりません 教えてくださいよろしくお願いします。

  • 数学の問題を教えてください!2

    数学の問題を教えてください!2 宜しくお願いします。解説もおねがいします。 1. (√2-√3+√5)(√2+√3-√5) 2. x+y=3、x-y=2√2のときx^2-2x-2xy+y^2-2y の値を求めよ。 3. x=√5-√3、y=√5+√3のとき、(1/x)+(1/y)の値を求めよ。 {(1/x)、(1/y)は(x分の1)、(y分の1)です!間違って逆だったらすいません!!言ってください。} 4. a=√3+√2+1、b=√3-√2+1のとき、つぎの式の値を求めよ。 (1) (1/2)ab (2) (a^2-2a-4)/(b^2-2b-4) {これも、(1/2)は2分の1、(a^2-2a-4)/(b^2-2b-4)はb^2-2b-4分のa^2-2a-4です} 5. 2(x-√3)^2-3(x-√3)-2=0 の解を求めよ。 6. 200・202・515などのように、0から9までの数字のうち2種類の数字を用いて3けたの整数を作る。したがって、100が最小で998が最大の整数となる。このとき、次の問いに答えよ。 (1) 0と1の2種類の数字を用いて作られる3けたの整数は何個あるか。 (2) 1と2の2種類の数字を用いて作られる3けたの整数は何個あるか。 (3) 作られる3けたの整数のうち、200より小さい整数は何個あるか。 (4) 作られる3けたの整数は全部で何個あるか。 です!!分かりにくいとは思いますが、ぜひ宜しくお願いします!!!

  • 連立方程式

    3桁の正の整数Nがある。Nの左端の数字を右端の数字の右に移し、3桁の正の整数Mをつけると、NはMの2倍より154だけ大きくなる。また、Nの下2桁に百の位の数を足すと35になる。もとの整数Nを求めよ。 3けたあるということは変数が3つあるということですか? 多分左端の数字をx右の数字をyとおけると思うんですけれどよくわかりません。教えてください(やり方)

  • 小数と2進法

    何進法の表記かわからないので、質問します。 問題は、 0<α<1となる数αに対し、2^(n-1)αの小数部分は、(*){nが奇数のときは、1/2以上、nが偶数のときは、1/2未満}を満たすという。(ただし、n=1,2,3・・・)二進法の考えを用いて、αの値を求めよ。 解答は、 与えられた条件(*)は、αを二進小数で表したときの小数第n位が{nが奇数のときは、1、nが偶数のときは、0}であることをを意味する。したがってαの二進小数表示は、α=0.101010・・・(1)という循環小数である。周期が2桁であるので、αを2^2=4倍し4αは、二進法で 10.101010・・・(2)と表されることから、(2)-(1)であるαの3倍は、二進法で10と表される。すなわち十進法の2である。ゆえに 3α=2 より α=2/3 この問題でα=0.a_1a_2a_3a_4・・・a_n・・・と表される小数は、10進法に限られるのか?三進法や八進法でよいのか?が疑問です。αは十進法であらわされるとは問題に書かれていないので、迷いました。 10進法の小数に2をかけると、その整数部分が二進法の小数第一位になるということなので、αは十進法の小数かと思いましたが、はっきりしません。どなたかαは十進法の表記なのか、その他の底の表記でもよいのか教えてくださいお願いします。

  • 大きな数、大きな演算精度の実数をあつかえるクラス

    1000桁くらいの大きな整数とか、有効数字1000桁くらいの実数の演算が可能なクラスを探しています。十進BASICならできると聞いたので、ダウンロードして試してみてできることは確認しましたが、BASICは20数年ぶりなので、ほとんど忘れています。CかC++で同じような精度の演算ができるライブラリはないでしょうか?

  • プログラミングの数値入力についてです

    数値計算の誤差について考察してるのですが、桁を%16.8fで情報落ちなどの計算をしていたところ、数値として a=1.001 と入力したところ、出力では a=1.00100005 と出ました。 なぜ5が出てきたのかがわかりません。 試しに100000倍してみたところ 100100.00467300 と出ました。 なぜこのような適当な数字が桁の下のほうに出てくるのでしょうか プログラミングはまだ始めて間もないので回答よろしくお願いします

  • javaプログラミングについて

    ただいまjavaプログラム勉強中でhit&blowを制作しております。 public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random rand = new Random(); int[] answer = new int[4]; int[] input = new int[4]; int[] Number = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; int x = 10; for (int i = 0; i < 4; i++) { int select = (int) (Math.random() * x); answer[i] = Number[select]; Number[select] = Number[x - 1]; x--; } int count = 1; while (true) { System.out.println("4桁の異なる数値を入力"); int str_input = scan.nextInt(); // 代入 for (int i = 0; i < 4; i++) { input[i] = str_input; } // hit int hit = 0; for (int i = 0; i < 4; i++) { if (input[i] == answer[i]) { hit++; } } // blow int blow = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++){ if (i != j && input[i] == answer[j]) { blow++; } } } if (hit == 4) { System.out.println("4hit"); System.out.println("正解まで " + count + "回"); break; } else { System.out.println("Hit:" + hit + " Blow:" + (blow - hit)); count++; } } } } 数字が4桁で作っているのですが、数字や4桁以上を入力してしまった場合の表示は後にしようとして、先にhitとblowの判定を作ろうとしているのですが、上記で実行したところhitとblowの判定がされずhit:0blow:0と表示されてしまいます。解決策を教えてください。 自分で作ってみたものの、hit blowの判定方法があっているかも自信がないです。

    • ベストアンサー
    • Java
  • 除法

    4で割ると2余り、6で割ると2余る正の整数について 2桁の正の整数で最小の数を求めるとき 求める2桁の正の整数をxとすると 4で割ったときの商をa 6で割ったときの商をbとすると x=4a+2 x=6b+2 このあとどのように求めるかわかりません。 御願いします

専門家に質問してみよう