問題はこちら
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