第十八次csp认证心得

第十八次CSP考试感受

在这里插入图片描述

对题目还没理解透就开始编程,太紧张,抗压能力有待提高!
第一题:甲乙丙丁玩数字游戏,跳过7的倍数和含有7的数字
思路:定义变量1累加到n结束,遇到7倍数和含有7数字跳过不计,取余数判断甲乙丙丁

#include<iostream>
using namespace std;
int flag(int n){
	if(n%7==0){
		return 1;//是 
	}
	while(n>=7){
		int temp=n%10;
		if(temp==7){
			return 1;//是 
		}
		n=n/10;
	}
	return 0;//否 
}
int main(){
	int n;
	cin>>n;//输入n
	int people[4],p1=0,p2=0,p3=0,p4=0,sum=0;//存储4个人的数据 
	for(int i=1;sum<n;++i){//计数 
        ++sum;
		if(i%4==1)
		{
			if(flag(i)){
				++p1;
				--sum;
			}
		}
		else if(i%4==2)
		{
			if(flag(i)){
				++p2;
				--sum;
			}
			
		}
		else if(i%4==3)
		{
			if(flag(i)){
				++p3;
			    --sum;
			}
			
		}
		else
		{
			if(flag(i)){
				++p4;
				--sum;
			}
		}
	}
	cout<<p1<<"\n"<<p2<<"\n"<<p3<<"\n"<<p4;
	return 0;
} 

第二题:对于垃圾站统计分数的问题
思路:上下左右有点则记0分,对角线四个点各加一分就是01234或者没分数的情况

#include<iostream>
using namespace std;
int find(int x,int y,int trash[][2],int n){//上下左右判断 
	int up=0,down=0,left=0,right=0,grade=0;
	for(int i=0;i<n;++i){
		if(trash[i][0]==x){//同轴 
			if(trash[i][1]==(y+1)){
				++up;
			}
			else if(trash[i][1]==(y-1)){
				++down;
			}
		}
		if(trash[i][1]==y){//同水平线 
			if(trash[i][0]==(x+1)){
				++right;
			}
			else if(trash[i][0]==(x-1)){
				++left;
			}
		}
		if(trash[i][0]==(x+1)&&trash[i][1]==(y+1)){
			++grade;
		}
		if(trash[i][0]==(x+1)&&trash[i][1]==(y-1)){
			++grade;
		}
		if(trash[i][0]==(x-1)&&trash[i][1]==(y+1)){
			++grade;
		}
		if(trash[i][0]==(x-1)&&trash[i][1]==(y-1)){
			++grade;
		}//对角线 
	}
	if(up&&down&&right&&left){
		return grade;//点 
	}
	return -1;//否则没有 
}
int main(){
	int n;
	cin>>n;
	int trash[n][2]={0},grade[5]={0};//分数排序01234,初始化座标为0 
	for(int i=0;i<n;++i){
		for(int j=0;j<2;++j){
			cin>>trash[i][j];
		}
	}
	for(int i=0;i<n;++i){//判断一遍 
		int x=trash[i][0];
		int y=trash[i][1];
		int sum=find(x,y,trash,n);
		if(sum==-1){
			//不计分,跳过 
		}
		else if(sum==0){
			grade[0]+=1;
		}
		else if(sum==1){
			grade[1]+=1;
		}
		else if(sum==2){
			grade[2]+=1;
		}
		else if(sum==3){
			grade[3]+=1;
		}
		else{
			grade[4]+=1;
		}
	}
	for(int i=0;i<5;++i){
		cout<<grade[i]<<endl;
	}
	return 0;
}

emmm,学习不止!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章