- ベストアンサー
演算子を使わない演算
はじめまして、ヨロシクお願いします。 早速ですが、私は今「入力された数値を7で割った値を表示しろ」という問題に取り組んでいます。これには次の条件があります。 (1)演算子の/を使ってはいけない。 (2)繰り返し処理を使ってはならない。 という縛りがある上で計算をしたいと思っているのですが、なかなかうまくいきません。何かいい方法はないでしょうか。 よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
/7.0 の代わりに *0.14285714285714285 と書けば、いいのでは。
その他の回答 (9)
- thamansa
- ベストアンサー率40% (95/232)
もしかして、 演算子「/」を使わずに、「/=」を使えって事だったりして? a = 12345678; // 入力された数値 a /= 7; // 7で割る
お礼
早速の回答ありがとうございます。 勉強を深めるために参考にさせていただきたいと思います。
- unibon
- ベストアンサー率47% (160/340)
ANo.6さんの回答が良いと思います。 なお、別解としては、つぎのような感じです。 public class Test { public static void main(String[] args) { double x = 100.0; double y; if (x > 0) { y = Math.exp(Math.log(x) - Math.log(7.0)); } else if (x < 0) { y = -Math.exp(Math.log(-x) - Math.log(7.0)); } else { y = 0; } System.out.println(y); } }
お礼
ありがとうございました。 とても参考になりました。
- hekkusyoi
- ベストアンサー率0% (0/2)
double N = 20; // 割られる数 double M = 7; // 割る数 double a = N * Math.pow(M, -1); System.out.println(a);
お礼
ありがとうございます。 勉強していく上で参考にさせていただきます。
- beubeu
- ベストアンサー率70% (7/10)
入力された数値が自然数であることが前提ですが。こういうのはどうでしょう (動作未確認)。 int N; // 入力 int M; // 出力 String s = new String(N, 7); M = Integer.parseInt(s.substring(0, s.length() - 1), 7);
お礼
ありがとうございます。 これからの勉強にいかさせていただきます。
- japan_3
- ベストアンサー率0% (0/2)
int i; int z; i = z %3; //zを3で割ったあまり でOK?
お礼
回答ありがとうございます。 これから勉強する上で参考にさせていただきます。
- koko_u_
- ベストアンサー率18% (459/2509)
すぐに思い付くのは与えられた数が 7 より小さくなるまで「繰り返し」引き算することだね。 繰り返しがダメならその部分を再帰呼び出しにするとか?
お礼
回答ありがとうございます。 参考にさせていただきます。
- MrBan
- ベストアンサー率53% (331/615)
この辺を使うのが多分お手軽?(出題者の意図とは違うかもしれませんが…) java.math.BigInteger.divide java.math.BigDecimal.divide
お礼
ありがとうございます。 これから勉強するにあたり、参考にさせていただきたいと思います。
ごめん ちがった 。。。
7回引き算。
お礼
ありがとうございます。 とてもシンプルな上に確実だと感じました。 とても参考になりました。