とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

JudgeOnline 1000

Welcome To PKU JudgeOnlineでちょっと遊んでいます。某所で短いコードにすることが流行っていたので,ちょっと違うところで同じく挑戦。
1000 -- A+B Problem
(ネタバレが嫌な方は続きを見ないでねん)

GCC/Cでsubmitした最短コードはこれ。

main(a,b){scanf("%c%d",&a,&b);putchar(a+b);}

G++/C++でsubmitした最短コードはこれ。
#include<stdio.h>
int a,b;main(){scanf("%c%d",&a,&b);putchar(a+b);}
include が必要なのと,暗黙の int が通らないので長くなっています。
これ以上はどうやって短くするのやら。

次に高いRankをねらって,Memoryを小さくしていきます。Pascalで0 の方々が大勢います。おまけにコードも短い。38Bって何ですか? Pascalを知らない私はC/C++で挑戦。足りない頭をひねって,read, writeなどの低レベル入出力関数を使うことで使用メモリを減らせることに気が付きました。

main(){char s[3];read(0,s,3);s[0]+=s[2]-48;write(1,s,1);}

これで,Memory が 8K。これよりメモリを減らすアイディアはほとんど浮かばないので*1,このコードをさらに短くすることを考えます。
main(a){read(0,&a,3);a+=(a>>16)-48;write(1,&a,1);}

最終はこんな感じになりました。8K/50B.

現段階でG++ Rank 1, C Rank 1です。みんなはどんなコードを書いてるのでしょう。