カメヲラボ

主にプログラミングとお勉強全般について書いてます

Superlong sums(1)

前回(http://d.hatena.ne.jp/Ozy/20060221)書いた①〜④のすべてを実装するのは難しいので、まず①、②と③からはじめる。要するに④だけ後回し。



char a['!!!'];i;c;
main(b){
for(gets(a);~scanf(" %c%d",&a[i],&b);a[i++]+=b);
for(;i--;a[i]-=c*10)c=(a[i]+=c)>57;
puts(a);
}


このコードでは、最初のループで入力char型配列に最初の文字コードを読み込み次は整数型として読み込んだ値を足している。次の桁上がり計算には、文字コード'9'より大きいかどうかの真偽値が真→1、偽→0ということを利用している。最終的にはこのコードで使われているcも必要ではなくなるが・・・。それから、巨大な配列を宣言する際は文字リテラルを上手に活用しよう。単に「大きな数」が欲しいだけなので、面倒なサーチは必要ない。ただ、'!!!'のように適当な文字を''で挟めば良いだけだ。少し足りなければ'~~~'ゼンゼン足りなければ'!!!!'と4文字にすればかなり巨大な配列を確保できる。