answer = number(个位是4的个数)+number(十位是4的个数) + number(百位是4的个数) - number(十位百位都是4的个数) - number(十位个位都是4的个数) - number(百位个位都是4的个数) + number(百位十位个位都是4的个数)
answer = 6*10 + 6*10 + 10*10 - 10 - 6 - 10 + 1
= 220 - 26 + 1
= 195
answer-=1 ; //0不算
显然c++实现的时候,给定一个自然数int值,只需要:
1. 确定当前int的位数。
2. 确定最高位的大小
3. 套用上面的公式计算。
#include
using namespace std;
void main()
{
int count = 0;
for (int i = 1; i <= 500; ++i)
{
if (i % 10 == 4 || i / 10 % 10 == 4 || i / 100 == 4)
continue;
++count;
cout << i << " ";
if (count % 10 == 0)
cout << endl;
}
cout << endl;
cout << "共有" << count << "个" << endl;
}
不但统计了个数,而且将没有4的都打印出来了
#include
using namespace std;
int main()
{
int i,a,b,c,s;
for(i=1;i<=500;i++)
{
a=i%10;
c=i/100;
b=(i%100-a)/10;
if(a!=4&&b!=4&&c!=4)
{
s++;
}
}
cout << s << endl;
}
#include
void main()
{
int count;
for (int i = 1; i <= 500; i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if (a == 4 || b== 4 || c== 4)
count++;
}
cout << "有 "<< count << "个" << endl;
}