洛谷算题C语言:Tarifa、SIBICE、SKENER、CETVRTA、BIJELE

记录洛谷刷题QAQ


一、[COCI2016-2017#1] Tarifa

题目描述

为了能够在网上冲浪,Pero 购买了一个数据套餐:

  • 每月他将获得 x M B x \rm{MB} xMB 流量。
  • 每月未用完的流量,可以在次月继续使用。

现在,我们知道了 Pero 在使用这个套餐的前 n n n 个月中,每月使用了多少 M B \rm{MB} MB 流量。请你帮忙计算,第 n + 1 n+1 n+1 月他能使用多少 M B \rm{MB} MB 流量。

输入格式

第一行一个整数 x x x

第二行一个整数 n n n

接下来 n n n 行,每行一个整数 p i p_i pi,表示第 i i i 月 Pero 使用了多少 M B \rm{MB} MB 流量。

输出格式

一行,一个整数,表示第 n + 1 n+1 n+1 月 Pero 能使用多少 M B \rm{MB} MB 流量。

样例 #1

样例输入 #1

10
3
4
6
2

样例输出 #1

28

样例 #2

样例输入 #2

10
3
10
2
12

样例输出 #2

16

样例 #3

样例输入 #3

15
3
15
10
20

样例输出 #3

15

提示

样例 1 解释

第一月,Pero 能使用 10 M B 10\rm{MB} 10MB 流量,实际使用 4 M B 4\rm{MB} 4MB 流量,剩余 6 M B 6\rm{MB} 6MB 流量。

第二月,Pero 能使用 6 + 10 = 16 ( M B ) 6+10=16(\rm{MB}) 6+10=16(MB) 流量,实际使用 6 M B 6\rm{MB} 6MB 流量,剩余 10 M B 10\rm{MB} 10MB 流量。

第三月,Pero 能使用 10 + 10 = 20 ( M B ) 10+10=20(\rm{MB}) 10+10=20(MB) 流量,实际使用 2 M B 2\rm{MB} 2MB 流量,剩余 18 M B 18\rm{MB} 18MB 流量。

第四月,Pero 能使用 18 + 10 = 28 ( M B ) 18+10=28(\rm{MB)} 18+10=28(MB) 流量。


数据规模与约定

对于 100 % 100\% 100% 的数据,保证 1 ≤ x ≤ 100 1\le x\le 100 1x100 1 ≤ n ≤ 100 1\le n\le 100 1n100 0 ≤ p i ≤ 1 0 4 0\le p_i\le 10^4 0pi104


说明

题目译自 COCI2016-2017 CONTEST #1 T1 Tarifa

代码如下

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

int main()
{
	int x, n;
	scanf("%d",&x);
	scanf("%d",&n);
	
	int sum = 0;
	for(int i = 1;i <= n;i++)
	{
		int m;
		scanf("%d",&m);
		sum = sum + x - m;
	}
	
	printf("%d\n",sum+x);
	return 0;
}


二、[COCI2006-2007#4] SIBICE

题目背景

年轻的 Mirko 把火柴扔的到处都是。他的母亲希望他将火柴放入盒子中。

题目描述

Mirko 现在要放置 n n n 根火柴,他有一个 w × h w\times h w×h 的矩形盒子。

他现在想请你进行判断这 n n n 根火柴每一个是否能够放入这个盒子。

我们可以把盒子看成一个平面,只需要判断火柴是否能够在这个平面内放下即可。

输入格式

输入第一行为三个整数 n , w , h n,w,h n,w,h

接下来的 n n n 行,每行一个 [ 1 , 1000 ] [1,1000] [1,1000] 区间内的整数,表示一根火柴的长度。

输出格式

输出共 n n n 行,对于每根火柴,输出 DA 表示能放下,否则输出 NE 表示放不下。

样例 #1

样例输入 #1

5 3 4
3
4
5
6
7

样例输出 #1

DA
DA
DA
NE
NE

样例 #2

样例输入 #2

2 12 17
21
20

样例输出 #2

NE
DA

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 50 1\le n\le 50 1n50 1 ≤ w , h ≤ 100 1\le w,h\le 100 1w,h100

说明

题目译自 COCI2006-2007 CONTEST #4 T1 SIBICE

代码如下

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

int main()
{
	int n,x,y;
	scanf("%d%d%d",&n,&x,&y);
	
	for(int i= 1;i <= n;i++)
	{
		int m;
		scanf("%d",&m);
		double max = sqrt(x*x+y*y);
		if(m<=max)
		{
			printf("DA\n");
		}
		else
		{
			printf("NE\n");
		}
	}
}


三、[COCI2006-2007#4] SKENER

题目背景

Mirko 在拿放大镜看杂志。

题目描述

他正在看一面 r r r c c c 列的杂志。放大镜有两个参数 z r , z c zr,zc zr,zc,表示把每个字符都转换成一个 z r zr zr z c zc zc 列的矩阵。

给出原始杂志,请你帮他找出杂志在放大镜下的影像。

输入格式

输入第一行四个整数 r , c , z r , z c r,c,zr,zc r,c,zr,zc

接下来的 r r r 行,每行 c c c 个字符。字符可能为数字,字母或 .

输出格式

输出一个 r × z r r\times zr r×zr 行, c × z c c\times zc c×zc 列的矩阵,表示放大镜下的影像。

样例 #1

样例输入 #1

3 3 1 2
.x.
x.x
.x.

样例输出 #1

..xx..
xx..xx
..xx..

样例 #2

样例输入 #2

3 3 2 1
.x.
x.x
.x.

样例输出 #2

.x.
.x.
x.x
x.x
.x.
.x.

提示

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 1 ≤ r , c ≤ 50 1\le r,c\le 50 1r,c50 1 ≤ z r , z c ≤ 5 1\le zr,zc\le 5 1zr,zc5

说明

题目译自 COCI2006-2007 CONTEST #4 T2 SKENER

代码如下

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

int main()
{
	int x,y, n, m;
	scanf("%d%d%d%d",&x,&y,&n,&m);
	
	char num[x][y];
	for(int i = 0;i < x;i++)
	{
		scanf("%s",&num[i]);	
	} 
	
	
	for(int i=0;i<x;i++){//四重循环 
		//这里控制原行数 
		for(int t=0;t<n;t++){
			//枚举放大后的行数 
			for(int j=0;j<y;j++){
				//这里控制原列数 
				for(int l=0;l<m;l++)//枚举放大后的列数 
					printf("%c",num[i][j]);//输出 (快捷) 
			}	
			printf("\n");//换行位置很重要 (在这一行所有列的字符输完 后再换行) 
		}
	}
	return 0;
}


四、[COCI2007-2008#1] CETVRTA

题目描述

给出坐标系中一个矩形的三个顶点的坐标,请你确定第四个顶点的坐标并输出。

保证矩形的边与坐标轴平行。

输入格式

3 3 3 行,每行两个 1 ∼ 1000 1\sim 1000 11000 之间的整数(含端点),表示这个矩形一个顶点的坐标。

输出格式

输出一行两个整数,表示第四个顶点的坐标。

样例 #1

样例输入 #1

5 5
5 7
7 5

样例输出 #1

7 7

样例 #2

样例输入 #2

30 20
10 10
10 20

样例输出 #2

30 10

提示

说明

题目译自 COCI2007-2008 CONTEST #1 T1 CETVRTA

代码如下

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

int max(int n,int m)
{
	if(n>m)	return n;
	else	return m;
}

int min(int n,int m)
{
	if(n< m)
		return n;
	else
		return m;
}
int main(){
	long long n1,n2,n3,m1,m2,m3;
	scanf("%lld%lld%lld%lld%lld%lld",&n1,&m1,&n2,&m2,&n3,&m3);
	printf("%lld %lld",n1+n2+n3-(n1+n2+n3-max(n1,max(n2,n3))-min(n1,min(n2,n3)))*2,m1+m2+m3-(m1+m2+m3-max(m1,max(m2,m3))-min(m1,min(m2,m3)))*2);
    return 0;
}

五、[COCI2007-2008#2] BIJELE

题目背景

Mirko 在阁楼发现了一套残缺的棋子。

题目描述

对于一套正确的棋子,应该包含:

  • 一个国王;
  • 一个皇后;
  • 两个车;
  • 两个象;
  • 两个马;
  • 八个兵。

现在给出这套残缺的棋子中每种棋子分别有多少个,请你求出需要如何添加或删除棋子来凑出完整的棋盘。

输入格式

输入一行六个数,依次表示国王,皇后,车,象,马,兵的数量。这些数字都在 0 ∼ 10 0\sim 10 010 之间(包含端点)。

输出格式

输出一行六个数,依次表示国王,皇后,车,象,马,兵需要添加或删除的数量。用正数来表示添加,用负数来表示删除。

样例 #1

样例输入 #1

0 1 2 2 2 7

样例输出 #1

1 0 0 0 0 1

样例 #2

样例输入 #2

2 1 2 1 2 1

样例输出 #2

-1 0 0 1 0 7

提示

说明

题目译自 COCI2007-2008 CONTEST #2 T1 BIJELE

代码如下

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

int main()
{
	int a, b, c, d, e, f;
	scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f);
	
	printf("%d %d %d %d %d %d\n",1 - a,1 - b, 2 - c, 2 - d, 2-  e,8 - f);
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值