笔试强训每日一题(十一)
文章目录
递归乘法
题目链接
题目描述
示例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;
}