华为机试HJ55:挑7

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试HJ55:挑7相关的知识,希望对你有一定的参考价值。

作者:Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数(一组测试用例里可能有多组数据,请注意处理)

输入描述:

一个正整数N。(N不大于30000)

输出描述:

不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17.

示例:

输入:

20
10

输出:

3
1

解题思路:

本题比较直接,直接统计能被7整除的数字还有包含7的数字,其中包含7的数字统计,可以通过将数字转化为字符串的形式分析,也可以将数字按位次查找,即先分析余数再进行除法。

测试代码:

#include <iostream>
#include <string>

using namespace std;

int statistics(int num)
{
    int result=0;
    for(int i=7;i<=num;++i)
    {
        int temp=i;
        if(i%7==0)
            result++;
        else{
            while(temp!=0)
            {
                if(temp%10==7)
                {
                    result++;
                    break;
                }
                temp/=10;
            }
        }
    }
    return result;
}
int main()
{
    int number;
    while(cin>>number)
    {
        cout<<statistics(number)<<endl;
    }
    return 0;
}

以上是关于华为机试HJ55:挑7的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ82:将真分数分解为埃及分数

华为机试HJ87:密码强度等级

华为机试HJ87:密码强度等级

华为机试HJ10:字符个数统计

华为机试HJ76:尼科彻斯定理

华为机试-HJ68 成绩排序