问题描述
思路
该题目需要对每一个数字进行判断,若判断的结果符合要求则不报数,相应的数组元素增加,否则报数,报数的计数值增加,题目中的输入值是报数的数目,因此对于不报数的数字不需要进行计数,仅仅需要记录报数的数目作为退出循环的条件,对于四个人的数组下标可以通过取模运算得到数组的下标,每次循环的过程中数字和记录四人的计数值都需要增加。
代码
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> ans(4,0);
int n;
cin>>n;
int i=1;//报数个数
int temp=0;//用于对甲乙丙丁进行计数
int number=1;//报的数字
while(i<=n)
{
bool flag=true;//数字是否含有7或者为7的倍数
int tmp=number;
while(tmp>0)
{
if(number%7==0)//7的倍数
{
flag=false;
break;
}
if(tmp%10==7)//含有数字7
{
flag=false;
break;
}
tmp=tmp/10;
}
if(!flag)//不报数
{
ans[temp%4]++;
}
else//报数
{
i++;
}
temp++;
number++;
}
for(int i=0;i<4;i++)
cout<<ans[i]<<endl;
return 0;
}