许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  洛谷刷题C语言:PET、KEMIJA、PROSJEK、KORNISLAV、RESETO:洛谷C语言刷题:PET等五道题目详解

洛谷刷题C语言:PET、KEMIJA、PROSJEK、KORNISLAV、RESETO:洛谷C语言刷题:PET等五道题目详解

阅读数 8
点赞 0
article_banner

记录洛谷刷题QAQ


一、[COCI2008-2009#3] PET

题目描述

在一项受欢迎的比赛 Dinner for Five 中,有  5 5 5 名选手和  4 4 4 名裁判,这  4 4 4 个裁判会对每一道菜用  1 ∼ 5 1 \sim 5 1∼5 的数字进行评估,每位选手的总分即是所有裁判评分的总和,参赛者按照其评分顺序从  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 1≤∣s∣≤100,数据保证字符串的内容一定是小写字母或空格。

说明

题目译自 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​=i∑j=1i​aj​​

给你数列  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 1≤n≤100, 1 ≤ a i , b i ≤ 1 0 9 1\le a_i,b_i\le 10^9 1≤ai​,bi​≤109。

说明

本题总分  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 2≤k<n≤1000。

说明
题目译自 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;
}



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空