題目描述
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;
}