此题和我们平时喝酒时数7,是一模一样的最容易错是27、28,56、57,也就是包含7的数字,还有7的倍数都要数出来 。
对于7的倍数直接取余判断就可以而对于包含7的则需要按位判断,直接上程序:
#include<iostream>
using namespace std;
bool contain7(int n)
{
int s = 0;
while (n)
{
s = n % 10;
if (s != 0 && s % 7 == 0)
{
return true;
}
n /= 10;
}
return false;
}
int main()
{
int n, count;
cin >> n;
count = 0;
if (n<7)
{
cout << 0 << endl;
return 0;
}
for (int i = 7; i <= n; i++)
{
if (i % 7 == 0)
{
count++;
continue;
}
if (contain7(i))
{
count++;
}
}
cout << count << endl;
return 0;
}结论:在按位判断是要有s!=0的判断,这题虽然简单,但是还是要注意细节,细节决定成败!!!
本文介绍了一种简单的算法,用于计算在指定范围内包含数字7或为7的倍数的整数数量。通过按位检查每个数字是否包含7,并利用取余操作来判断是否为7的倍数。
1542

被折叠的 条评论
为什么被折叠?



