2020.2.19GDUT寒假训练排位赛1-B

B — MooBuzz

题目大意:

农夫约翰的奶牛玩数字游戏“FizzBuzz”。这个游戏的规则很简单:站成一圈,奶牛依次从一开始向上数,每头奶牛轮到自己时说一个数字。如果一头奶牛达到了3的倍数,她应该说“Fizz”而不是这个数字。如果一头奶牛达到了5的倍数,她应该说“Buzz”而不是这个数字。如果一头牛达到15的倍数,她应该说“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
给定N(1≤N≤109),请确定游戏中说出的第N个数字。测试用例2-5满足N≤106
输入
一个正整数N
输出
第N个数字
在这里插入图片描述

题目分析:

直接暴搜会超时。找出规律:
1、2、Moo、4、Moo、Moo、7、8、Moo、Moo、11、Moo、13、14、Moo
16、17、Moo、19、Moo、Moo、22、23、Moo、Moo、26、Moo、28、29、Moo

每15个里就有8个数字,所以只需要看N与8的关系

代码实现:

#include <iostream>
#include <cstdio>

using namespace std;

int num[8] = {1,2,4,7,8,11,13,14};

int main()
{
    int n;
    cin >> n;
    int p = n/8;
    int q = n%8;
    if(q==0){
        q = 8;
        p--;
    }
    int ans = p*15+num[q-1];
    cout << ans << endl;

    return 0;
}


最后希望路过的dl给予改进建议!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值