问这个的做法
幸运数(lucky)
【题目描述】
抽奖环节让所有的同学都很兴奋,有的同学兴奋是因为抽到了想要的东西,
但有的同学抽到的却是不想要的。还有的人则抽到了好几个奖,羡慕死其他同学
了。
在联欢会临近结束的时候,抽奖的最后一个环节是同学们可以把自己的奖品
让给其他同学,但是让的话也是有规则的。这个规则就是用幸运数来指定。一位
获奖的同学,他要根据自己的抽奖号码 n,然后想一个数 m,计算符合要求的幸
运数有多少个。
所谓幸运数字,是指一个数字,如果它的数位的平均数不超过 m,那么这个
数字称为幸运数。
例 如 当 m=5 时 , 1234567890 和 123456789 是 幸 运 数 , 因 为
(1+2+3+4+5+6+7+8+9+0)/10=4.5 < 5,(1+2+3+4+5+6+7+8+9)/9 = 5;
而 99 则不是幸运数,因为(9+9)/2=9 > 5。
给定一位同学的抽奖码 n 和他想的数 m,统计 1n 之间有多少个幸运数。n 之间幸运数的个数。
【输入格式】
第一行包含两个整数 n 和 m
【输出格式】
一个整数,1
【样例 1 输入】
19 3
【样例 1 输出】
9
【样例 2 输入】
2022 5
【样例 2 输出】
1516
【样例 3 输入】
123512353 8
【样例 3 输出】
123503565
【样例 1 说明】
第一个样例 1,2,3,10,11,12,13,14,15 是幸运数
【数据范围】
对于 30%数据:1<=n<=10^5, 1<=m<=9
对于 70%数据:1<=n<=10^9, 1<=m<=9
对于 100%数据:1<=n<=10^18, 1<=m<=9
#include <iostream>
using namespace std;
bool is_lucky_number(long long x, int m)
{
int sum = 0;
int count = 0;
while (x)
{
sum += x % 10;
x /= 10;
count++;
}
return static_cast<float>(sum) / count <= m;
}
int main()
{
long long n, count = 0;
int m;
cin >> n >> m;
for (long long i = 1; i <= n; i++)
if (is_lucky_number(i, m))
count++;
cout << count << endl;
return 0;
}
后面这个数据范围是干啥用的