2015-2016真题
从1开始的正整数列,不含3的倍数(如3,6,9不在数列中),且不含1000至2000内的数字(如1000,1001,2000不在数列中),而且数字中的4最多出现2个(如484在这个数列中,而4414不在这个数列中),输出数列中第1000个,2000个第3000个,…,第10000个数字(共十个数字)
。
代码:
#include<iostream>
using namespace std;
int main()
{
int cnt = 0;
int i = 1;
while(cnt<=1000)
{
int cnt4 = 0, a = i;//把i复制1份到a,以免干扰i的变化;
while (a > 0)//判断a里有几个4;
{
if (a % 10 == 4)//由低位向高位判断
{
cnt4++;
}
a = a / 10;//不断将原数字的十位,百位…变为新数字的个位
}
if (i % 3 != 0 && (i < 1000 || i>2000) && cnt4 <= 2)
{
cnt++;
if (cnt % 100 == 0)
{
cout << i << endl;
}
}
i++;
}
return 0;
}