0
点赞
收藏
分享

微信扫一扫

笔试强训每日一题(十一)

at小涛 2022-03-11 阅读 61

笔试强训每日一题(十一)

文章目录

递归乘法

题目链接

题目描述

示例1:

示例2:

题目思路

题目代码

class Solution {
public:
    int multiply(int A, int B) 
    {
        //写一个递归函数,不使用*运算符,实现两个正整数的相乘
        if(B == 0)
            return 0;
        if(B == 1)
            return A;//返回本身
        return A+multiply(A,B-1);
    }
};

挑7

题目链接

题目描述

数据范围: 1 <= n <= 30000,本题有多组输入

输入描述

输出描述

题目解析

题目代码

#include<iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int count = 0;
        for(int i = 7;i <= n;i++)
        {
            if(i%7 == 0)
            {
                count++;//是7的倍数
                continue;//跳过下面的代码,继续循环
            }
            int num = i;
            while(num)
            {
                if(num%10 == 7)
                {
                    count++;//各个位上含7
                    break;
                }
                num/=10;
            }
        }
        cout<< count <<endl;
    }
    return 0;
}

考虑到范围要求,我们还可以这样写:

#include<iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int count = 0;
        for(int i = 7;i <= n;i++)
        {
            if((i % 7) == 0 || (i % 10) == 7 || ((i / 10) % 10) == 7 ||
       ((i / 100) % 10) == 7 ||((i / 1000) % 10) == 7)
            {
                count++;//是7的倍数
            }
        }
        cout<< count <<endl;
    }
    return 0;
}
举报

相关推荐

笔试强训7

笔试强训4

【Java笔试强训 20】

【Java笔试强训 4】

【Java笔试强训 31】

0 条评论