CCF:201912-1 报数

问题描述

在这里插入图片描述
在这里插入图片描述

思路

该题目需要对每一个数字进行判断,若判断的结果符合要求则不报数,相应的数组元素增加,否则报数,报数的计数值增加,题目中的输入值是报数的数目,因此对于不报数的数字不需要进行计数,仅仅需要记录报数的数目作为退出循环的条件,对于四个人的数组下标可以通过取模运算得到数组的下标,每次循环的过程中数字和记录四人的计数值都需要增加。

代码

#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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42729072/article/details/105371343