zoukankan      html  css  js  c++  java
  • CCF CSP 2019121 报数

    201912-1 报数

    题目描述

    甲乙丙丁决定玩一个报数的游戏来打发时间。游戏规则为四个人从1开始轮流进报数,但如果需要报出的数是7的倍数或含有数字7则直接跳过。

    此外大家规定,在总共报出了n个数后(不计入被跳过的数)游戏结束。现在需要你来帮忙统计,游戏过程中每个人各自跳过了几次。

    输入格式

    从标准输入读入数据。

    输出仅一行,包含一个正整数n,表示报出了多少个数后游戏结束。

    输出格式

    输出道标准输出。

    输出共四行,每行一个整数,依次表示甲乙丙丁四人在游戏过程中跳过的次数。

    样例输入1

    20
    

    样例输出1

    2
    1
    1
    0
    

    样例1解释

    报数过程为:

    甲:1,乙:2,丙:3,丁:4

    甲:5,乙:6,丙:跳过,丁:8

    甲:13,乙:跳过,丙:15,丁:16

    甲:17,乙:18,丙:19,丁:20

    甲:跳过,乙:22,丙:23,丁:24

    在丁报出24后,四个人总计报出了20个数,游戏结束。

    样例输入2

    66
    

    样例输出2

    7
    5
    11
    5
    

    子任务

    • 测试点1、2、3、4和5,保证\(n \le 10^2\)
    • 测试点6、7、8、9和10,保证\(n \le 666\)

    思路

    • 计算某个数是否含有7
    • 跳过时的数字是报数的序号,但是整体的次数是输入的n

    代码

    #include <stdio.h>
    #define N 4
    int have7(int n)
    {
        while(n)
            if(n % 10 == 7) return 1;
            else n /= 10;
        return 0;
    }
    int main(void)
    {
        int n,i, cnt[N] = {0, 0, 0, 0};
        scanf("%d", &n);
        for(i=1;n>0;i++){
            if(i%7==0||have7(i)){
                cnt[(i-1)%N]++;
            }else{
                n--;
            }
        }
        for(i = 0; i < N; i++)
            printf("%d\n", cnt[i]);
        return 0;
    }
    
  • 相关阅读:
    svn错误:更新源码出现校验和不匹配问题
    Python:定义自己的ConfigParser
    js实现页面跳转的几种方式
    Div+CSS浏览器兼容问题( FireFox IE6 IE7 IE8 IE9)
    window.open(url地址?..&..,_blank,对话框的外观参数);
    SQL分割字符串2
    Razor语法
    js键盘事件全面控制详解
    window.open(url, name, features, replace)
    SQL游标
  • 原文地址:https://www.cnblogs.com/zhangzizi/p/14434637.html
Copyright © 2011-2022 走看看