洛谷刷题C语言:PET、KEMIJA、PROSJEK、KORNISLAV、RESETO

记录洛谷刷题QAQ


一、[COCI2008-2009#3] PET

题目描述

在一项受欢迎的比赛 Dinner for Five 中,有 5 5 5 名选手和 4 4 4 名裁判,这 4 4 4 个裁判会对每一道菜用 1 ∼ 5 1 \sim 5 15 的数字进行评估,每位选手的总分即是所有裁判评分的总和,参赛者按照其评分顺序从 1 1 1 5 5 5 进行编号。

请你编写一个程序,输出评分最高的选手的编号以及其分数。

输入格式

输入共 5 5 5 行,每一行有 4 4 4 个正整数,表示每位裁判对第 i i i 位选手的评分。

输入数据将确保胜者是唯一的。

输出格式

输出仅 1 1 1 行,有 2 2 2 个正整数,中间有一个空格,分别表示评分最高的选手以及其分数。

样例 #1

样例输入 #1

5 4 4 5
5 4 4 4
5 5 4 4
5 5 5 4
4 4 4 5

样例输出 #1

4 19

样例 #2

样例输入 #2

4 4 3 3
5 4 3 5
5 5 2 4
5 5 5 1
4 4 4 4

样例输出 #2

2 17

提示

说明

题目译自 COCI2008-2009 CONTEST #3 T1 PET

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int max = 0;
	int num = 0;
	for(int i = 1;i <= 5;i++)
	{
		int a, b, c, d;
		scanf("%d%d%d%d",&a,&b,&c,&d); 
		if(a + b+c+d > max)
		{
			num = i;
			max = a+b+c+d;
		}
	}
	printf("%d %d\n",num,max);
	return 0;
}

二、[COCI2008-2009#3] KEMIJA

题目背景

Luka 天天上课走神。

题目描述

Luka 又在化学课上鬼混了!他不是在写平衡方程,而是在写一句奇怪的话。

Luka 通过在每一个元音字母( a \texttt{a} a e \texttt{e} e i \texttt{i} i o \texttt{o} o u \texttt{u} u)后面加上 p \texttt{p} p 再加上原来的元音字母的方式加密这一个单词,如 kemija \texttt{kemija} kemija 变成 kepemipijapa \texttt{kepemipijapa} kepemipijapa paprika \texttt{paprika} paprika 变成 papapripikapa \texttt{papapripikapa} papapripikapa

老师想知道调皮的 Luka 写了些什么,请你帮助老师,写出一个解密程序。

输入格式

一行一个字符串 s s s,表示加密后的句子,数据保证不会有前导空格与尾随空格,但句子中间可能出现空格。

输出格式

一行一个字符串,表示解密后的句子。

样例 #1

样例输入 #1

zepelepenapa papapripikapa

样例输出 #1

zelena paprika

样例 #2

样例输入 #2

bapas jepe doposapadnapa opovapa kepemipijapa

样例输出 #2

bas je dosadna ova kemija

提示

数据范围

∣ s ∣ |s| s s s s 的长度,则 1 ≤ ∣ s ∣ ≤ 100 1 \leq |s| \leq 100 1s100,数据保证字符串的内容一定是小写字母或空格。

说明

题目译自 COCI2008-2009 CONTEST #3 T2 KEMIJA

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	char num[1001];
//	scanf("%s",&num);
	gets(num);
	int len = strlen(num);
	for(int i = 0;i < len;i++)
	{
		if(num[i] == 'a'||num[i] == 'e'||num[i] == 'i'||num[i] == 'o'||num[i] == 'u')
		{
				num[i+2] = '0';
				num[i+1] = '0';
			
		}
		
	}
	for(int i = 0;i < len;i++)
	{
		if(num[i] != '0')
		{
			printf("%c",num[i]); 
		}
		
	}
	return 0;
}

三、[COCI2014-2015#1] PROSJEK

题目描述

有一个数列 a a a,现在按照下列公式求出一个数列 b b b

b i = ∑ j = 1 i a j i b_i=\frac{ \sum^i_{j=1} a_j }{i} bi=ij=1iaj

给你数列 b b b,请求出数列 a a a

输入格式

第一行一个整数 n n n ,表示数列 b b b 的长度。

接下来一行 n n n 个整数,表示数列 b b b

输出格式

一行 n n n 个整数,表示数列 a a a

样例 #1

样例输入 #1

1
2

样例输出 #1

2

样例 #2

样例输入 #2

4
3 2 3 5

样例输出 #2

3 1 5 11

样例 #3

样例输入 #3

5
1 2 2 3 4

样例输出 #3

1 3 2 6 8

提示

样例输入输出 3 解释

当数列 a = 1 , 3 , 2 , 6 , 8 a=1,3,2,6,8 a=1,3,2,6,8 时,数列 b = 1 1 , 1 + 3 2 , 1 + 3 + 2 3 , 1 + 3 + 2 + 6 4 , 1 + 3 + 2 + 6 + 8 5 b=\frac{1}{1},\frac{1+3}{2},\frac{1+3+2}{3},\frac{1+3+2+6}{4},\frac{1+3+2+6+8}{5} b=11,21+3,31+3+2,41+3+2+6,51+3+2+6+8,即 b = 1 , 2 , 2 , 3 , 4 b=1,2,2,3,4 b=1,2,2,3,4

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 100 1\le n\le 100 1n100 1 ≤ a i , b i ≤ 1 0 9 1\le a_i,b_i\le 10^9 1ai,bi109

说明

本题总分 50 50 50 分。

本题译自 Croatian Open Competition in Informatics 2014/2015 Contest #1 T1 PROSJEK。

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int n;
	scanf("%d",&n);
	int num[n+1];
	for(int i = 1;i <= n;i++)
	{
		scanf("%d",&num[i]);
	}
	
	int NUM[n+1];
	for(int i = 1;i <= n;i++)
	{
		
		NUM[i] = i*num[i];
		for(int j = 1;j < i;j++)
		{
			NUM[i] = NUM[i] -NUM[j];
		}
	}
	
	
	for(int i = 1;i <= n;i++)
	{
		printf("%d ",NUM[i]);	
	}
	return 0;
}

三、[COCI2008-2009#2] KORNISLAV

题目描述

乌龟 Kornislav 从来没有什么有趣的事。 由于他将生活三百年,他一直在努力寻找消磨时间的方法。 这个周末,他开始玩“面积最大的矩形”这个游戏。
首先,Kornislav 需要四个正整数。他通过向一个方向移动,旋转 90 ° 90° 90° ,在新方向上行走等方式来形成一个图案。Kornislav 总共进行了三个 90 ° 90° 90° 旋转,并走过了四条线段。
当朝某个方向行走时,他的步数必须等于四个所选整数中的一个,并且每个整数只能成为一条线段的长度。根据 Kornislav 使用这四个整数的顺序,他的步行将形成各种形状,其中也包括一些未封闭的图案。
编写一个程序,计算出乌龟的行进轨迹可以形成的最大矩形面积。

输入格式

一行四个整数 a , b , c , d a,b,c,d a,b,c,d,表示 Kornislav 挑选的四个整数。

输出格式

一行一个整数,表示 Kornislav 的行进轨迹所能形成的最大矩形面积。

样例 #1

样例输入 #1

1 2 3 4

样例输出 #1

3

样例 #2

样例输入 #2

4 4 3 4

样例输出 #2

12

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,有 1 < a , b , c , d < 100 1<a,b,c,d<100 1<a,b,c,d<100

说明
题目译自 COCI2008-2009 CONTEST #2 KORNISLAV,译者 @mnesia

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int num[4];
	
	for(int i= 0;i < 4;i++)
	{
		scanf("%d",&num[i]);
	}
	for(int i = 0;i < 4;i++)
	{
		for(int j = i+1;j < 4;j++)
		{
			if(num[i] > num[j])
			{
				num[i] = num[i] + num[j];
				num[j] = num[i] - num[j];
				num[i] = num[i] - num[j];			}
		}
	}
	
	int max;
	max = num[0] * num[2];
	printf("%d\n",max);
	
	
	
	return 0;
}

五、[COCI2008-2009#2] RESETO

题目描述

埃拉托色尼筛法是一种著名的素数筛法,可以查找所有直至 n n n 的素数。该算法的步骤是:

  1. 写下 2 2 2 n n n 之间的所有整数(包括 2 2 2 n n n)。
  2. 找到尚未删除的最小数,并将其命名为 p p p; 则 p p p 是素数。
  3. 划掉 p p p 及其所有尚未划掉的倍数。
  4. 如果尚有数未被划掉,请转到步骤 2 2 2

编写一个程序,给定 n n n k k k,找出第 k k k 个被删除的整数。

输入格式

一行两个整数 n n n k k k,其具体含义请见题目描述。

输出格式

一行一个整数,表示第 k k k 个被划掉的整数。

样例 #1

样例输入 #1

7 3

样例输出 #1

6

样例 #2

样例输入 #2

15 12

样例输出 #2

7

样例 #3

样例输入 #3

10 7

样例输出 #3

9

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,有 2 ≤ k < n ≤ 1000 2 \leq k < n \leq 1000 2k<n1000

说明
题目译自 COCI2008-2009 CONTEST #2 RESETO,译者 @mnesia

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int p[2000]; //是否是素数,一开始全部设为0. 
int main(){
	int n,k;
	scanf("%d%d",&n,&k);
	int t[2000]; //被划掉的数。 
	int s=1;  
	for(int i=2;i<=n;i++){
		if(p[i]==0){ //如果这个数是素数。 
			for(int j=i;j<=n;j+=i){ //由于这个素数本身也要划掉,所以从i开始。 
				if(p[j]==1) continue; //为了避免重复计算,需要特判。 
				p[j]=1; //这个数是合数。 
				t[s++]=j;
			}
		}
	}
	printf("%d",t[k]);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值