※数値はすべて整数だと思ってください。
※「A % B」は「A」を「B」で割った剰余です(A mod B)
表題の件ですが、例えば、「A」が入力された文字数、「B」が基準となる文字数とします。
すると「C = A + (B - A % B)」で「C」に代入される数値はかならず「B」の倍数になることが保証されています。
具体的には:
A=15、B=16の場合 => C = 15 + (16 - 15 % 16) なので C は 16
A=17、B=16の場合 => C = 17 + (16 - 17 % 16) なので C は 32
A=3、B=10の場合 => C = 3 + (10 - 3 % 10) なので C は 10
A=10、B=3の場合 => C = 10 + (3 - 10 % 3) なので C は 12
となり、入力された文字数が基準となる文字数に満たない場合は基準まで文字数を補填し、入力が基準以上の場合は基準の倍数まで文字数を補填することになります。
そうなることは分かるのですが、「なぜそうなるのか?」のイメージがつかめずモヤモヤしています。
「A」が「B」より小さいときは、まだ分かるのですが(基準に足りない分を足しているだけなので)、「A」が「B」より大きい場合に、「C」が必ず「B」の倍数になることをどう証明したら良いでしょうか。
皆さんのお知恵を拝借できれば幸いです。
よろしくお願いします。
No.1
- 回答日時:
並べ替えれば,
C = A - (A % B) + B
A - (A % B) は,Aから余りを引いているのでBの倍数.
それにBを足しても当然Bの倍数
ご回答ありがとうございます。
「A - (A % B) は,Aから余りを引いているのでBの倍数」のイメージがつかめずに
モヤモヤしていたのですが、No.2の回答のように「A=nB+r」、「A%B=r」として
「C=(nB+r)+(B-r)」と書いてみると、どういう計算をしているのかわかります。
なんとなく、「A%B」を別の書き方をすればいいんだろうなー、くらいに思っていたわけですが、
実は、「A」を「Bのn倍に余りを足したもの(nB+r)」と考えれば良かったんですね。
自分の頭の悪さにゲンナリです…
No.2ベストアンサー
- 回答日時:
と全く同じ質問なわけだが, A を B で割った商と余りをそれぞれ n, r と置いたときに A と A%B を B, n, r で書いてみればわかる.
なるほど!やっと理解できました。
「A=nB+r」、「A%B=r」として…
「C=(nB+r)+(B-r)」と書いてみると構造が見えてきますね。
実はコレ、下記の関数のアルゴリズムです(Pythonです)。
「s」に文字列、「size」に出力のサイズを渡して実行すると、
「s」が「size」の倍数サイズのバイト列になるというものです。
def mkpad(s, size):
s = s.encode("utf-8") # UTF-8文字列をバイト列に変換する
pad = b' ' * (size - len(s) % size)
return s + pad
ちょー基本的なアルゴリズだと思いますが、人に助けてもらわないと仕組みが理解できないくらいなので、
何もないところから、自分でこのアルゴリズムを思いつくのは無理でしょうね…。
これからもコツコツ修行したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Excel(エクセル) エクセルのマイナス表示 3 2022/03/28 16:35
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Java Java 年数計算 3 2023/01/28 10:52
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SPIの問題
-
恒等的に正しいとはどういう意...
-
数学の質問です。 3で割ると2余...
-
高2数学 軌跡
-
3で割ると2余り,5で割ると3余...
-
w=1/z−iのときz平面上の図形は...
-
「Access」のフォームで、同じ...
-
計算問題
-
7で割ると2余り、11で割ると3余...
-
平衡定数の求め方について、ΔG=...
-
至急!数学の基本問題、助けて...
-
高校数1についての質問です。 ...
-
エクセル 2/3乗
-
TextBox1とTextBox2の数値の大...
-
4元連立方程式の解き方を教えて...
-
次の関数の組が線形独立である...
-
e^ixを1次の項までテイラー展開...
-
整数の問題です。(10^n)+1は素...
-
高校数学:整数
-
連想配列の初期化
おすすめ情報