※数値はすべて整数だと思ってください。
※「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.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
ちょー基本的なアルゴリズだと思いますが、人に助けてもらわないと仕組みが理解できないくらいなので、
何もないところから、自分でこのアルゴリズムを思いつくのは無理でしょうね…。
これからもコツコツ修行したいと思います。
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)」と考えれば良かったんですね。
自分の頭の悪さにゲンナリです…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【数3】微分方の応用の問題で増...
-
SPIの問題
-
3で割ると2余り,5で割ると3余...
-
恒等的に正しいとはどういう意...
-
ベクトルの問題です
-
高校数1についての質問です。 ...
-
連想配列の初期化
-
数学の質問です。 3で割ると2余...
-
中3 因数分解
-
隣り合う平方数の大きい数から...
-
Access VBA クリップボードの内...
-
整数の問題です。(10^n)+1は素...
-
実数x,yが2x+y=1,x>0,y>0を満...
-
x3+ax+6がx-1で割り切れると...
-
楕円と円の共有点について
-
高2数学 軌跡
-
△ABCの外心Oから・・・
-
至急!数学の基本問題、助けて...
-
二次関数
-
文字式計算 フリーソフト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
恒等的に正しいとはどういう意...
-
隣り合う平方数の大きい数から...
-
SPIの問題
-
数Bの数列の問題です。 正の奇...
-
平衡定数の求め方について、ΔG=...
-
右のような図形の時、方程式が...
-
数学の質問です。 3で割ると2余...
-
高2数学 軌跡
-
【マクロ】Fon nextステートメ...
-
4元連立方程式の解き方を教えて...
-
二次関数
-
「Access」のフォームで、同じ...
-
ライニプッツの公式に関してで...
-
3で割ると2余り,5で割ると3余...
-
w=1/z−iのときz平面上の図形は...
-
SPIの問題でわからないところが...
-
円の方程式
-
連想配列の初期化
-
大、小2つの数がある。大きい数...
-
エクセル 2/3乗
おすすめ情報