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