第十八次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,學習不止!!!

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