読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.311 z in FizzBuzzString

問題はこちら
No.311 z in FizzBuzzString - yukicoder

a:「3の倍数かつ5の倍数」1個につきzが4個
b:「5の倍数でない3の倍数」1個につきzが2個
c:「3の倍数でない5の倍数」1個につきzが2個
ところで1つ目の条件はバラして2つ目と3つ目にまとめることができ
B:「3の倍数」1個につきzが2個
C:「5の倍数」1個につきzが2個 となる
(Bはbに加え、15の倍数の時もカウントされる。Cとcも同様なので、結局15の倍数の時は4個が計上される)

ということで求める答えは(floor(N/3)+floor(N/5))*2
最大ケースでは約16/15*10^18となるので、64bitで収まる

int main(){
	long n;
	scanf("%ld%d%d%d",&n);
	printf("%ld",(n/3+n/5)*2);
	return 0;
}

*2の代わりにbitshiftを使うとカッコが外せる

long n;main(){n=scanf("%ld",&n)>printf("%ld",n/3+n/5<<1);}

58B