UOJ Logo www的博客

博客

AFO

2021-11-19 16:32:53 By www

www AFO

我这个神经病发了两遍退役记

新号旧号各发一篇

新号@Bright

www

2021-09-15 15:37:54 By www

额,OJ真不能改名字吗???

这我随手打的字母要留到我退役

建议有大佬开启改名通道

出改名卡也行啊

热烈欢迎

2021-08-14 16:59:22 By www

emmmmmm

看见高一的小朋友注册了OJ

一转眼自己也是快退役的老OIer(虽然什么也不会)

瑟瑟发抖

还是欢迎各位小学弟学妹开启“愉快”OI之旅

祝各位一路AC啊!!!!

printf("Welcome to OI");

OI路上的第一篇博客(#4 领奖)

2021-01-26 17:50:09 By www

这是我OI道路上的第一篇博客。

4题解

问题描述

一天,poorpool让一群人上台领奖。poorpool所在的学校非常有钱,他们的奖励是这样的:

竞赛得奖。省一1000元,省二500元,省三300元。
考试得奖。如果是年级一百及以前800元,否则如果是二百及以前600元,否则如果是三百及以前400元。
干部得奖。是学生会干部则150元,是班干部则125元。

为了增加趣味性,所有编号末尾是3的学生只拿233元,无论他是什么身份。

输入格式

第一行是学生人数nn。

下来nn行,每行先是这个学生的编号,然后有三个整数:

第一个代表竞赛拿了几等奖,0代表未得,123分别对应省一二三。

第二个代表考试在年级里排了多少名。

第三个代表干部情况,0代表不是干部,1代表是学生会干部,2代表是班干部,3代表既是学生会干部又是班干部。

关于这道题可以看出用结构体可以储存学生的信息,计算简便,可读性强。

这道题还是比较简单的,废话不多说,下面是代码:


#include<bits/stdc++.h>

using namespace std;

int prize[1000000];                //用一个整形数组来储存每个同学的奖金 

struct studentl{            
    int b_h,js,nj,jp;        //b_h即编号,js即竞赛,nj即年级排名,jp即干部。 
};

studentl student[1000000];

int main (){

    int n;//n是指学生个数 

    scanf("%d",&n);

    for(int i=1;i<=n;i++){

        scanf("%d%d%d%d",&student[i].b_h,&student[i].js,&student[i].nj,&student[i].jp);

        if(student[i].js==1) prize[i]+=1000;    //计算竞赛的奖金 

        else if(student[i].js==2) prize[i]+=500;

        else if(student[i].js==3) prize[i]+=300;

        if(student[i].nj<=100) prize[i]+=800;    //计算年级排名的奖金 

        else if(student[i].nj<=200) prize[i]+=600;

        else if(student[i].nj<=300) prize[i]+=400;

        if(student[i].jp==1) prize[i]+=150;        //计算班干部的奖金 

        else if(student[i].jp==2) prize[i]+=125;

        else if(student[i].jp==3) prize[i]+=275;

        if(student[i].b_h%10==3) prize[i]=233;
    } 

    for(int i=1;i<=n;i++){

        if(prize[i]==233||prize[i]>=700){    //判断输出 

        printf("%d %d\n",prize[i],student[i].b_h);

        }                                 
    }
    return 0;
}//在开始的时候选择了用cin,cout来输入输出,但超时了,换用scanf和printf就ok了
www Avatar