A1~A5题解
2026-06-23 19:52:36
发布于:河北
A1
经典签到题了属于是
这题很简单,学C++的必做题
#include<cstdio>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d",a+b);
}
个人习惯用cstdio
A2
展示数学
首先先按照题目的样例整一个类似的表格
在这里
正方形个数为
再举一个的例子:
正方形个数为(边长为1的)+(边长为2的)
所以可以得到一个通用公式:
……(直到m或n有一项为一)
于是就可以这样写:
#include<cstdio>
int main(){
int n,m;
scanf("%d %d",&n,&m);
int ans=0;
if(n<=m){
for(int i=n,j=m;i>0;i--,j--){
ans+=i*j;
}
}else{
for(int i=n,j=m;j>0;i--,j--){
ans+=i*j;
}
}
printf("%d",ans);
}
附:求和公式
A3被吃了
A4
本身不难,但要注意坑点:
1:对系数要进行特判,如果是0就不用输出(写成0x^cnt}喜提WA
2:对第一项系数进行特判,是负数写-,是正数不用写+
3:系数是1只写x^{cnt},但常数项如果是0还要写(省略常数0喜提WA
4:常数直接写数字(写成numx^0喜提WA
5:指数是1时只写num x(写成numx^1喜提WA
#include<cstdio>
#include<algorithm>
int main(){
int n,num;
scanf("%d",&n);
int cnt=n;
while(cnt>=0){
scanf("%d",&num);
if(num!=0){
if(cnt!=n) if(num>0) printf("+");
if(num<0) printf("-");
if(abs(num)!=1 || cnt==0) printf("%d",abs(num));
if(cnt>0) printf("x");
if(cnt>1) printf("^%d",cnt);
}
cnt--;
}
}
A5
注意到这是一道结构体板子题(算是吧)
结构体相关知识:参见oi-wiki结构体
定义部分:
struct people{
int i,fenshu,bianhao;
}a[5000];
排序cmp部分:
int cmp(people a,people b){
if(a.fenshu!=b.fenshu)return a.fenshu>b.fenshu;
else return a.bianhao<b.bianhao;
return a.fenshu<b.fenshu;
}
完整代码:
#include<cstdio>
#include<algorithm>
using namespace std;
struct people{
int i,fenshu,bianhao;
}a[5000];
int cmp(people a,people b){
if(a.fenshu!=b.fenshu){
return a.fenshu>b.fenshu;
}else{
return a.bianhao<b.bianhao;
}
return a.fenshu<b.fenshu;
}
int main(){
int n,m,jizhun,peo=0;
scanf("%d %d",&n,&m);
m*=1.5;
for(int i=0;i<n;i++){
scanf("%d %d",&a[i].bianhao,&a[i].fenshu);
}
sort(a,a+n,cmp);
jizhun=a[m-1].fenshu;
for(int i=0;i<n;i++){
if(a[i].fenshu>=jizhun)peo++;
}
printf("%d %d\n",jizhun,peo);
for(int i=0;i<peo;i++){
printf("%d %d\n",a[i].bianhao,a[i].fenshu);
}
}
话说我在这道老题里竟然能用sctdio完成时空双修者

这里空空如也





















有帮助,赞一个