每日一题:华为初级题库——挑7

  <题目要求>

  输入一个正整数N(N不大于3000),输出小于N,且与7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数。

  思路:主要讨论能否整除7的倍数,或者逐位对10求余,观察其是否为7;对1到N的数进行遍历,进行以上讨论,用一个变量存储,满足要求数字的个数。

#include <iostream>

using namespace std;

int main()
{
    int n;
    int m;
    int num=0;
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        if(i%7==0)
        {
            num++;
        }
        else
        {
            m=i;
            while(m!=0)
            {
                if(m%10==7)
                {
                    num++;
                    break;
                }
                else
                {
                    m=m/10;
                }
            }

        }
    }
    cout<<num<<endl;
    return 0;
}

 

posted on 2014-04-19 19:23  Sophie@原本  阅读(230)  评论(0编辑  收藏  举报