メモ

yukicoderでゆるふわgolf

yukicoder No.499 7進数変換

問題はこち
No.499 7進数変換 - yukicoder

基数変換するだけ。
……と見せかけてN=0がコーナーケースになりうるので注意

long s,n;
main(){
	scanf("%d",&n);
	s=7;
	while(s<=n)s*=7;
	while(s/=7)putchar('0'+n/s%7);
}

n%7,n/=7;とすることで下の桁から順に求めることができるので、出力を逆からしたいときの再帰
N=0のケースがいい感じになるように、とりあえずわかりやすく書いてみると

main(i,n){
	scanf("%d",&n);
	if(n){
		main(0,n/7);
		putchar(48+n%7);
	}else if(i){
		putchar(48);
	}
}

となる。
scanfの返り値を見れば1回目かどうか分かることと、N=0のときも再帰を呼び出して構わないことを合わせると

main(n){~scanf("%d",&n)|n&&main(n/7)+putchar(48+n%7);}

54B