整数の割り算と余り
割り算の余りを計算する操作を適用する必要があることは、数値の桁を扱うときにわかります。
タスク
3 桁の数字が与えられます。この数値の単位から始まるすべての桁を表示し、単位と百を並べ替えて形成された新しい数値を取得します。
私たちは常に数値を全体として考えますが、数値は数字で構成されているということを忘れないでください。数値のすべての桁を選択するにはどうすればよい
でしょうか。
実際、数学を覚えていれば、すべては非常に簡単に解決されます。そして数学は、どんな数値も数字の項の合計に分解できることを教えてくれます。
例:
365 = 3*100 + 6*10 + 5*1
各桁が対応するビット項の乗数であることがわかります。
列を数値 10 で割る例を使用して、数値の各桁を個別の変数に取得する方法を示します。数値 10 を使用します。 10 進数システムがあり、それに応じてビット用語は 1、10、100 などになります。
この図を分析すると、次のことがわかります。
<プレ>
e = n% 10
# 操作 n % 10 - 数値 n の最後の桁を計算します
# (単位の桁)
365 % 10 = 5
d = n // 10% 10
# 操作 n // 10 - 数値を 10 倍減らします。
# つまり、数値の最後の桁を破棄します (
365 // 10 = 36)。
# これで 10 の位を計算できるようになりました。
# おなじみの操作を結果に適用する -
# 数値 10 で割った余りを計算します。
36 % 10 = 6
s = n // 100
# 百の位を取得するには、数字の右から 2 桁を切り捨てるだけで十分です。
# つまり、2 を 10 で割ったもの
# (
n // 10 // 10 または
n // 100 と同じ)
365 // 100 = 3 強い>
プレ>
数値の桁を変数に保存すると、目的の桁に適切なビット係数 (1、10、100 など) を乗算して、その桁から他の数値を作成できます。
たとえば、以下の行は、元の数値 n
から百の位と一の位を並べ替えた新しい数値を取得します。
1) 単位の桁 ( e
に保存されます) 100
を掛けます。
2) 10 の位 (変数 d
に保存) 10
を掛けます。
3) 単純に百の位に 1
を掛けるか、変数 s
に格納されている値を取得するだけです。
次に、ポイント 1、2、および 3 の値を単に加算するだけで、新しい数値が得られます。
<プレ>
n1 = e*100 + d*10 + s;
完全なプログラムは次のようになります。
<プレ>
n = int(入力())
e = n% 10
d = n // 10% 10
s = n // 100
print(e, d, s, e*100 + d*10 + s)