5.10 A-生不逢七

链接:牛客网
来源:牛客网
睡前游戏中最简单又最好玩的游戏就是这个啦!

该游戏规则为:多名玩家轮流报数,当要报的数字中含有 7 或者是 7 的倍数时(例如 37,49),不能将该数报出来,要换一种提前规定好的方式报数,当一个人报错或者报慢了这个人就输了。

我们认为玩家是围成一圈进行游戏的,第 n 个人报完数之后,会轮到第 1 个人报数。

现在告诉你玩家的总人数以及你上一个人报的数(用数字表示,即便这个数含有 7 或者是 7 的倍数),你需要预测接下来 k 轮你要报的数字当你需要报的数字含有 7 或者是 7 的倍数时,你需要输出字符 p

输入描述
第一行一个整数 T,表示输入数据的组数。

接下来每组数据中均只有一行数据,每行三个整数 n,a,k,分别表示玩家数量,你的上一位玩家报的数,你需要模拟的游戏轮数。

数据保证 1 ≤ T, n, k, a ≤ 100。


输出描述

共 𝑇 行,每行输出 𝑘 个整数或者字符 p。

示例

输出:

3
2 16 3
3 69 3
2 1 10

输出:

p 19 p
p p p
2 4 6 8 10 12 p 16 18 20

这个题目比较简单,总的来说就是遍历+判断就好。

首先审题:我们会得到玩游戏的总人数、你前一个人的报数和游戏轮次,根据这些,可以知道每轮我们要报的数字(第一轮仅需要,在给定的前一个人报的数的基础上+1即可;后面的轮次都是在当下数字的基础上加上人数)。然后再据此基础上,去判断该轮自己的数是否应该报出来。

然后就是实现代码:

#include<stdio.h>
int judge(int sum)
{
    if(sum % 7 == 0)//如果是7的倍数,则直接return打印p
        return 0;
    else
    {
        int t = sum, res;
        int flag = 0;//判断是否可以找到7
        while(t)//这里其实就是判断一个数中是否含有7
        {
            res = t % 10;//每次得到最低位
            if(res == 7)
            {
                flag = 1;//找到7后修改flag,跳出循环
                break;
            }
            t = t / 10;//迭代t
        }
        if(!flag)//没有找到7,不满足输出p的条件
            return 1;
        else
            return 0;
    }
}
int main()
{
    int t;
    scanf("%d",&t);//共有t组数据
    int num,a,k;
    while(t--)
    {
        scanf("%d%d%d",&num,&a,&k);
        int next = a + 1;//next为自己需要报的数字
        for(int i=0;i<k;i++)
        {
            if(!judge(next))//判断是否需要需要输出p
                printf("p ");
            else
                printf("%d ",next);
            next = next + num;//因为下一轮到自己前,会经历num个人
        }
        printf("\n");
    }
}

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值