第26講 n進数の演算---その2 減法
第10話 プログラム解説その4
else{
d[j]=n-1;
}
の意味は、100004-7すなわち
を計算すれば分かります。
5進数だとわかりにくいかも知れませんが、
10進数の引き算なら、
ですよね。ですから、5進法なら、
です。10進数にしろ5進数にしろ、
位の数字が0であったものはn-1になってますね。
10進数のときはn-1=10-1=9
5進数のときはn-1= 5-1=4
ですよね。
納得できない方のために、もう少し説明を加えましょう。
100004
まず、4は1つ上の位0から1つ借りようとしました。
ところが、1つ上の位はお金を持っていません。
お金を貸すために1つ上の位の0は、さらに1つ上の位から、
お金を借りようとします。
残念ながら、0の1つ上の位の財産も0です。
仕方なく、0はさらに1つ上の位からお金を借りて、
0にお金を貸そうと考えます。
ですが、残念ながら0の1つ上の位の財産も0です。
0も0と同じことを考えますが、今回も上の位のお金も0です。
最終的には、0が1からお金を借ります。
わかりやすく、10進法で説明し直すと、
0が10万円を1から借りてきて、1万を0にかします。
すると、0の財産は9万円となります。
0は1万の内の1000円を0に貸します。
これで、0の財産は9000円となります。
資産が1000円となった0は、このうちの100円を0に貸しますから、
貯金は900円となります。
100円の運営資金を得た0は、4に10円貸しますので貯金は90円となり、
一の位は14円の財産をもちます。
それで、はじてめて引き算に応じられて14-7=7円となるのです。
結果的には
となりますね。
10進数の説明をコピペして、5進数に直すと
100004
0が5の5乗=3125円を1から借りてきて、5の4乗=625円を0にかします。
すると、0の財産は3125-625=2800(=4×625=4×5の4乗)円となります。
0は625円の内の5の3乗=125円を0に貸します。。
これで、0の財産は625-125=600(=4×125=4×5の3乗)円となります。
資産が125円となった0は、このうちの25円を0に貸しますから、
貯金は125-25=100(=4×25=4×5の2乗)円となります。
25円の運営資金を得た0は、4に5円貸しますので、
資産は20(=4×5の1乗)円です。
すると、一の位は9円の財産をもちます。
それで、はじてめて引き算に応じられて9-7=2円となるのです。
(今の説明で4が4つになったことに注意してくささい。)
残りは、
int ik;
for(i=g-1;i>=0;i--){
if(c[i]>0){
if(u>0){
c[i+1]=n;
ik=i+1;
}
else{
c[i+2]=n;
c[i+1]=n+1;
ik=i+2;
}
break;
}
}
return(ik);
の謎を解明して終わりです。
これの任務なんだかお分かりですか。