2019-12-1 报数

问题描述

试题编号: 201912-1
试题名称: 报数
时间限制: 1.0s
内存限制: 512.0MB
问题描述:
 
/*2019-12-1 报数*/
/*解:
跳过的条件
(1)7的倍数
(2)含有7,即某一位为7
(3)甲必定为4的倍数+1,乙丙丁同理
综上所述,*/

/*2019-12-1 报数*/
#include<stdio.h>
int fun(int n)//判断是否含有7,有则返回1,无则返回0
{
    while(n!=0)
    {
        int m=n%10;
        n=n/10;
        if(m==7)
        {
            return 1;
        }
    }
    return 0;
}
int main ()
{
    int n;
    int a=0,b=0,c=0,d=0;
    scanf("%d",&n);
    int cnt=0;//报数的次数
    int i=1;//每次的数字

    while(cnt<n)
    {
        int f = fun(i);
        //printf("%d\n",f);
        if(i%4==1)//甲报数
        {
            if(i%7==0||f==1)//甲跳过
                a++;//甲跳过次数 计数
            else//甲没跳过,如1,5,9,13
                cnt++;
        }
        else if(i%4==2)
        {
            if(i%7==0||f==1)
                b++;
            else
                cnt++;
        }
        else if(i%4==3)
        {
            if(i%7==0||f==1)
                c++;
            else
                cnt++;
        }
        else if(i%4==0)
        {
            if(i%7==0||f==1)
                d++;
            else
                cnt++;
        }
        i++;
    }

    //printf("%d %d\n",i,cnt);
    printf("%d\n%d\n%d\n%d\n",a,b,c,d);
    return 0;
}

  

posted @ 2021-02-28 18:49  永恒&  阅读(58)  评论(0编辑  收藏  举报