• ベストアンサー

4桁の絶対10になる計算のゾロ目のやつを教えてください。

2653のような適当な数字でも+、-、×、÷を駆使してイコール10にする遊びを教えてもらってやっていたんですが、1111や2222のようなゾロ目の式が出来たり出来なかったりするので教えて頂きたいです。 1111~9999まで計算式をお願いします。1111は出来ないですかね。多分。 宜しくお願いします。

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

  • ベストアンサー
  • 787B-GT4
  • ベストアンサー率22% (2/9)
回答No.5

himajin100000さんがすごい解答をしてくれたので役に立つかはわかりませんが・・・。 2×2×2+2=10 3×3+3÷3=10 (4÷4+4)×√4=10 5+5+5-5=10 (8+8)÷8+8=10 9÷9+√9×√9=10 ルートは使ってもいいのでしょうか? 6,7はもう少し考えさせてください。

embep
質問者

お礼

回答有り難うございます。 ん~出来ればルートなしの計算式が良いんですが。 しかしこれで十分です。完璧です。 6,7も宜しくお願いします。

その他の回答 (6)

  • 787B-GT4
  • ベストアンサー率22% (2/9)
回答No.7

何度もすいません。 9でルートを使わない方法を思いつきました。 (9×9+9)÷9=10

embep
質問者

お礼

ありがとうございます。 こんなやり方があったんですね。 もし1,6,7も見つかればいつかお願いします。

  • 787B-GT4
  • ベストアンサー率22% (2/9)
回答No.6

考えてみましたが、思いつきません。 1,6,7は「答えがない」が答えではダメでしょうか。

embep
質問者

お礼

有り難うございます。 1,6,7はないですよねぇ。 私も考えているんですが1,6,7だけは解決しないんですよ。

回答No.4

凄く致命的なバグ発見 4→basenumに変更 public static string ChangeBase(int target,int basenum,int digit){ string ret=""; for (int i = 0;i < digit; i++){ ret = (target % basenum ).ToString() + ret; target = target / basenum; } return ret; } ちなみに for(int i = 0;i < System.Math.Pow(5,numbers.Length - 1) * 2;i++){ string hoge = ChangeBase(i,5,numbers.Length); //(略) } という感じでパターンを5通りに増やした上で ToOperatorメソッドに case 4: ret = ""; break; を書き加えると ●複数の数字を繋げて10以上の数字として用いたり,小数点や累乗を補わない。かならず数字と数字の間に演算子が入る の条件が外れて +1*11-1 = 10 +11-1*1 = 10 +11-1/1 = 10 +11*1-1 = 10 +11/1-1 = 10 の組み合わせが出てくる。相変わらず括弧はどうしていいかわからない #実際には=は表示されないけど

embep
質問者

お礼

2回も有り難うございます。 しかし私にはこれは何が書いてあるか正直分かりません。 数学はあまり得意ではないもんで。すいません。 また機会がありましたら宜しくお願いします。

回答No.3

以下の規則に従い,C#のプログラムを用いて求めてみました。 ●複数の数字を繋げて10以上の数字として用いたり,小数点や累乗を補わない。かならず数字と数字の間に演算子が入る ●最初の数字にも符号をつけられる(最初が-で10になる組み合わせは最後の1個) ●括弧は用いない。 namespace Q3914884A { class Program { public static void Main(string[] args) { for (var n = 0;n <= 9;n++){ int[] numbers = {n,n,n,n}; for(int i = 0;i < System.Math.Pow(4,numbers.Length - 1) * 2;i++){ //一番最初に *や/が付くとエラー。回避方法不明 string hoge = ChangeBase(i,4,numbers.Length); string formula = ""; for (int j = 0; j < hoge.Length; j++){ formula += ToOperator(int.Parse(hoge[j].ToString())) + numbers[j].ToString(); } Microsoft.JScript.Vsa.VsaEngine ve = Microsoft.JScript.Vsa.VsaEngine.CreateEngine(); double d = System.Double.Parse(Microsoft.JScript.Eval.JScriptEvaluate(formula, ve).ToString()); if (d == 10){ System.Console.WriteLine(formula + " " + d.ToString()); } } } System.Console.ReadKey(true); } public static string ToOperator(int hoge){ string ret = ""; switch(hoge){ case 0: ret = "+"; break; case 1: ret = "-"; break; case 2: ret = "*"; break; case 3: ret = "/"; break; default: throw new System.ArgumentException(); } return ret; } public static string ChangeBase(int target,int basenum,int digit){ string ret=""; for (int i = 0;i < digit; i++){ ret = (target % 4).ToString() + ret; target = target / 4; } return ret; } } } +2+2*2*2 = 10 +2*2*2+2 = 10 +3*3+3/3 = 10 +3/3+3*3 = 10 +5+5+5-5 = 10 +5+5-5+5 = 10 +5+5*5/5 = 10 +5+5/5*5 = 10 +5-5+5+5 = 10 +5*5/5+5 = 10 +5/5*5+5 = 10 -5+5+5+5 = 10 大分重複もあるがこんな結果となった。

  • drhirorin
  • ベストアンサー率28% (10/35)
回答No.2

(11-1)÷1=10 (22-2)÷2=10 (33-3)÷3=10 …みたいのは、ダメ?

embep
質問者

お礼

回答有り難うございます。 drhirorinさんのやNo,1の方のような考え方は面白いのですが数字と数字の間には必ず何かしら記号が入るんです。 すいません。もし解りましたらまたよろしくお願いします。

  • YSNR-HRN
  • ベストアンサー率36% (40/111)
回答No.1

11÷1.1以下同様 .はだめ?

embep
質問者

お礼

回答有り難うございます。 ん~絶対数字の間に何かしら記号が入るんですよ。 3333なら 3×3+3÷3=10 みたいな感じです。もし分かればまた宜しくお願いします。

関連するQ&A