题目描述
Farmer John 的奶牛们最近成为了一个简单的数字游戏“FizzBuzz”的狂热玩家。这个游戏的规则很简单:奶牛们站成一圈,依次从一开始报数,每头奶牛在轮到她的时候报一个数。如果一头奶牛将要报的数字是 33 的倍数,她应当报
Fizz
来代替这个数。如果一头奶牛将要报的数字是 55 的倍数,她应当报
Buzz
来代替这个数。如果一头奶牛将要报的数字是 1515 的倍数,她应当报
FizzBuzz
来代替这个数。于是这个游戏的开始部分的记录为:
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16
由于词汇的匮乏,奶牛们玩的 FizzBuzz 中用
Moo
代替了
Fizz
、
Buzz
、
FizzBuzz
。于是奶牛版的游戏的开始部分的记录为:
1, 2, Moo, 4, Moo, Moo, 7, 8, Moo, Moo, 11, Moo, 13, 14, Moo, 16
给定 NN,请求出这个游戏中第 NN 个被报的数。
输入格式
输入包含一个整数 NN。
输出格式
输出游戏中被报出的第 NN 个数。
输入输出样例
输入 #1复制
4
输出 #1复制
7
说明/提示
关于部分分:
测试点 11 为样例。
测试点 2\sim 52∼5 满足 N\le 10^6N≤106。
对于 100\%100% 的数据,1 \leq N \leq 10^91≤N≤109
供题:Brian Dean
上代码:
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
bool check(ll x) {
if (x%3==0) return false;
if (x%5==0) return false;
return true;
}
int main() {
ll k; scanf("%lld",&k);
ll res=15LL*(k/8)-1; k&=7;
while (k) {
if (check(++res)) --k;
}
printf("%d", res);
return 0;
}