メモ

yukicoderでゆるふわgolf

yukicoder No.637 X: Yet Another FizzBuzz Problem

問題はこちら
No.637 X: Yet Another FizzBuzz Problem - yukicoder

FizzBuzzは8文字、FizzとBuzzは4文字、それ以外のときは100以上なら3文字、そうでなく10以上なら2文字、さもなくば1文字

main(){
	int ans=0;
	for(int i=0;i<5;i++){
		int n;
		scanf("%d",&n);
		if(n%15==0)ans+=8;
		else if(n%3==0||n%5==0)ans+=4;
		else if(n>=100)ans+=3;
		else if(n>=10)ans+=2;
		else ans++;
	}
	printf("%d",ans);
}

桁数が欲しいときはlog10を使う。また、3の倍数5の倍数のときに独立に4増えると考えて、次のようにまとめる事ができる

s;
main(n){
	for(;~scanf("%d",&n);)s+=!(n%3)+!(n%5)<<2?:log10(n)+1;
	printf("%d",s);
}

80B