【2024科创】阶段赛—2(基础)
A、[GESP202403 一级] 找因数 根据题目描述的因数,遍历从1到a的每个数,满足条件进行输出即可:
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;