- 締切済み
この問題で困っています。
問題:桁数の不明な整数xがあります。 xの各位の値を合計する関数を求めなさい。 (例:X=234の場合、2+3+4=9) 調べてみたものの、数学が苦手なので、答えが分かりません。 宜しくお願いします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- kabaokaba
- ベストアンサー率51% (724/1416)
No.2です. ひねくれてあえて再帰式で. xを自然数とし,f(x)を n `div` 10 == 0 ならば x `mod` 10 そうでなければ (x `mod` 10) + f(x `div` 10) と定めると,求める関数になる. 関数とか写像ってのは,わざわざ 明示的に式で書かなくたっていいのです. 入力に対して出力が確定さえすればいいのです.
>..... 常用対数を用いた場合はどのような形になるのですか? 「頭出し」だけですが…。 x = "AB" = A*10 + B の例(A≠0, 少々ウルサいですね)でいえば、 Log(x) = 1.xxx なので、x は 2 桁だとわかる。 A = INT(x/10) …(スプレッドシート流記法) と「頭出し」。
- arrysthmia
- ベストアンサー率38% (442/1154)
そのまんま、式に書くだけでしょ。 小数点から左へ k 桁目の数字が [ x/10^(k-1) ] - 10 [ x/10^k ] だから、 求める関数は、 Σ{k=1→∞} [ x/10^(k-1) ] - 10 [ x/10^k ] 。 ただし、[ ] は、床関数を表すガウスの記号。 Σ を整頓して、 10 x - 9 Σ{k=0→∞} [ x/10^k ] とかでも良いかも。
>「桁数不明」じゃ不可能かも。 #2 さんのコメントを拝見して、蛇足を。 常用対数を使ってよければ、頭出しできますね。
>桁数の不明な整数xがあります。 xの各位の値を合計する関数を求めなさい。 「桁数不明」じゃ不可能かも。 たとえば、10 進 2 桁なら…。 x = AB = A*10 + B 各桁の合計 S は、 S = A + B = x - 9*A (例) x = 57 S = 57 - 9*5 = 12 目算のほうが速い?
- kabaokaba
- ベストアンサー率51% (724/1416)
10で割っていけばいいだけ 234 ÷ 10 = 23 あまり 4 23 ÷ 10 = 2 あまり 3 2 ÷ 10 = 0 あまり 2 つまり,10でわっていき,あまりを加算していく 割ったときの商が0になったら終わり プログラムなんかならこんなのは再帰で書けばい もっと数学的に書くんなら 最初に常用対数をとってfloorあたりを使って 桁数を確定させれば式で書ける.
補足
すみませんが、常用対数やfloorを使った場合の式はどのような感じになるのですか?度々すみませんが、教えてください。
- gohtraw
- ベストアンサー率54% (1630/2965)
床関数とか使ってもいいのかな?よければ各位の値は簡単に出るのでその合計を取ればいいと思いますが・・・。 済みません。自信ありません。
補足
もし床関数を使った場合は、どのような答えになるのですか? すみませんが、宜しくお願いします。
補足
常用対数を用いた場合はどのような形になるのですか? 良ければ教えてください。宜しくお願いします。