天天看點

洛谷P5834 MooBuzz S

題目描述

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;
}
           

繼續閱讀