开始: 2025-03-23 08:00:00

【2024科创】阶段赛—2(基础)

结束: 2025-03-23 09:40:00
当前: 2025-0505-2626 01:39:37  类型:OI 状态:已经结束 

A、[GESP202403 一级] 找因数 根据题目描述的因数,遍历从1a的每个数,满足条件进行输出即可:

if(a%i==0)cout<<i<<"\n";

B、[GESP202412 一级] 奇数和偶数 根据题意,统计奇数或偶数个数之一即可。我们读取每个输入的数字,检测其是否为奇数,而后累计其个数:

		cin>>ai;
		sum1+=ai%2;//若ai%2==1,则sum1增加1

而偶数个数为n-sum1

C、[GESP202303 二级] 百鸡问题 对于多重循环问题,减少循环重数的最简单、最直接的思路就是利用变量之间的数学或逻辑关系,将遍历过程转换检验。例如,本题中我们可以遍历a,b,c当中的每一个,但由于它们之间的数学关系,可知:遍历a,b而后验证c是否合格即可:

	for(int a=0;a<=m;a++){	
		for(int b=0;b<=m-a;b++){
			int c=m-a-b;
			ans+=(c%z==0&&a*x+b*y+c/z==n);
		}
	}

D、[GESP202303 二级] 画三角形 这个问题主要注意内层循环次数和外层循环次数(当前行输出次数和当前是第几行)之间的关系,以及正确处理超出范围时回到第一个即可:

			cout<<chr;
			chr+=1;
			if(chr>'Z')chr='A';

E、[GESP202306 二级] 找素数

F、[GESP202406 三级] 移位 注意到n的范围:

n%=26;

而后直接输出即可:输出过程控制好输出的字符和随着i增加c会“溢出”,“溢出”后回到'A'的过程。

		char c='A'+i+n;
		if(c>'Z')c-=26;
		cout<<c;