[蓝桥 2023] 位乘积计数

问题描述

给定两个正整数 n 和 m,请你计算出,从 1到 n 的所有整数中,满足每一位上的数字乘积小于等于 m 的数字的个数。

例如,当 n=12,m=3 时,满足条件的数字有 1,2,3,10,11,12 共 6 个。

输入格式

输出格式

输出一个整数,表示从 1 到 n 的数中,满足每一位上的数字乘积小于等于 m 的数字个数。

样例输入 1

6 3

样例输出 1

3

样例输入 2

15 2 

样例输出 2

5

运行限制

语言 最大运行时间 最大运行内存
C++ 1s 256M
C 1s 256M
Java 2s 256M
Python3 3s 256M
PyPy3 3s 256M
Go 3s 256M
JavaScript 3s 256M

总通过次数: 36  |  总提交次数: 39  |  通过率: 92.3%

难度: 中等   标签: 思维,

代码分享:

#include 
using namespace std;
int main()
{
  long long int n,j,m,sum=0;
      long long int b;
  cin>>n>>m;//范围和判断条件的输入
  for(int i=1;i<=n;i++){
    long long int w=1,a=i;
    for( j=i;j!=0;){
      b=j%10;
      j/=10;
      w=b*w;
    }   //w用来记录每个位数相乘得到的结果
    if(w<=m)   //和m比较判断是否满足条件
    sum++;
  }
  cout<

你可能感兴趣的:(蓝桥杯,算法,蓝桥杯,数据结构,c++,c语言)