洛谷刷题C语言:FAKTOR、BELA、PUTOVANJE、使用三个系统程度的能力、R.I.P.

记录洛谷刷题C语言QAQ


[COCI2009-2010#2] FAKTOR

题目背景

本题为 COCI   2009-2010   2 nd   round  T1 FAKTOR \texttt{COCI 2009-2010}\ 2^\texttt{nd}\ \texttt{round}\ \text{T1 FAKTOR} COCI 2009-2010 2nd round T1 FAKTOR

分值按原题设置,满分 30 30 30

题目描述

给定 A , I A,I A,I,求一个最小的 N N N,使得 ⌈ N A ⌉ ≥ I \lceil\frac{N}{A}\rceil\geq I ANI

输入格式

一行两个整数 A , I A,I A,I

输出格式

一行一个整数 N N N

样例 #1

样例输入 #1

38 24

样例输出 #1

875

样例 #2

样例输入 #2

1 100

样例输出 #2

100

样例 #3

样例输入 #3

10 10

样例输出 #3

91

提示

1 ≤ A , I ≤ 100 1\leq A,I\leq 100 1A,I100

代码如下

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

int main()
{
	int A, I;
	scanf("%d%d",&A,&I);
	
	printf("%d\n",A*(I-1)+1);
	return 0;
}

[COCI2015-2016#6] BELA

题目描述

有一个叫 Belote \text{Belote} Belote 的纸牌游戏,游戏只用到 AKQJT987 共八种纸牌。
游戏规则就是将所有纸牌的值加起来,看看谁的值较大,谁就赢。每种纸牌的值都有两种,当其为特殊牌时有一个值,非特殊牌时也有一个值。每种卡牌的值见下表:

现在 Mirko \text{Mirko} Mirko 4 × N 4\times N 4×N 张纸牌,并已知特殊牌的属性为 B B B,请计算 Mirko \text{Mirko} Mirko 所有纸牌值的总和。

输入格式

第一行包含整数 N N N 和字符 B B B

接下来 4 × N 4\times N 4×N 行,每行包含两个字符。第一个字符为这张纸牌的种类,第二个字符为这张纸牌的属性。若这张纸牌的属性 = B =B =B,则说明这张纸牌为特殊牌。

输出格式

输出一个整数,为 Mirko \text{Mirko} Mirko 所有纸牌值的总和。

样例 #1

样例输入 #1

2 S
TH
9C
KS
QS
JS
TD
AD
JH

样例输出 #1

60

样例 #2

样例输入 #2

4 H
AH
KH
QH
JH
TH
9H
8H
7H
AS
KS
QS
JS
TS
9S
8S
7S

样例输出 #2

92

提示

【样例 2 解释】

纸牌值总和为 $11 + 4 + 3 + 20 + 10 + 14 +
0 + 0 + 11 + 4 + 3 + 2 + 10 + 0 + 0 + 0 = 92 $。

【数据范围】

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 100 1\le N\le 100 1N100 B B B 和所有纸牌的属性都属于 SHDC 四种字符中的一种,所有纸牌的种类都属于 AKQJT987 共八种纸牌中的一种。

【题目来源】

题目译自 COCI 2015-2016 CONTEST #6 T1 BELA

本题分值按 COCI 原题设置,满分 50 50 50

代码如下

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

int main()
{
	int n;
	char s;
	scanf("%d %c",&n,&s);
	
	int num = 0;
	for(int i = 0;i < n*4;i++)
	{
		char c[3];
		scanf("%s",&c);
		if(c[0] == 'A')
			num += 11;
		if(c[0] == 'K')
			num += 4;
		if(c[0] == 'Q')
			num += 3;
		if(c[0] == 'T')
			num += 10;	
		if(c[0] == 'J'&&c[1] == s)
			num += 20;
		if(c[0] == 'J'&&c[1] != s)
			num += 2;
		if(c[0] == '9'&&c[1] == s)
			num += 14;
	}
	printf("%d\n",num);
	return 0;
}

[COCI2015-2016#6] PUTOVANJE

题目描述

Mislav \text{Mislav} Mislav 最喜欢在森林里度过时光,因为森林里有各种各样的水果,吃了每种水果都能获得一定的饱食度。但他不会使自己的总饱食度超过 C C C

现在森林里有一条小径,小径旁顺次种了 N N N 个水果,每个水果都有一个饱食度 w i w_i wi Mislav \text{Mislav} Mislav 可以选择从任意一个水果的位置开始,往第 N N N 个水果前进。在前进的过程中,如果吃下当前位置的水果,总饱食度不会超过 C C C,他就一定会吃下该水果。否则,他就会跳过该水果,继续前进。

请问 Mislav \text{Mislav} Mislav 能吃掉的水果个数最多是多少?

输入格式

第一行包含两个整数 N N N C C C

第二行包含 N N N 个整数 w i w_i wi,为第 i i i 个水果的饱食度。

输出格式

输出一个整数,为 Mislav \text{Mislav} Mislav 能吃掉的最多水果个数。

样例 #1

样例输入 #1

5 5
3 1 2 1 1

样例输出 #1

4

样例 #2

样例输入 #2

7 5
1 5 4 3 2 1 1

样例输出 #2

3

样例 #3

样例输入 #3

5 10
3 2 5 4 3

样例输出 #3

3

提示

【样例 1 解释】

如果 Mislav \text{Mislav} Mislav 决定从第 1 1 1 个水果开始吃,那么他可以吃到第 1 1 1 2 2 2 4 4 4 个水果,一共吃了 3 3 3 个。如果他从第 2 2 2 种水果开始吃,那么他可以吃到第 2 2 2 3 3 3 4 4 4 5 5 5 4 4 4 个水果。

【数据范围】

对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 1000 1\le N\le 1000 1N1000 1 ≤ C ≤ 1 0 6 1\le C\le 10^6 1C106 1 ≤ w i ≤ 1000 1\le w_i\le 1000 1wi1000

【题目来源】

题目译自 COCI 2015-2016 CONTEST #6 T2 PUTOVANJE

本题分值按 COCI 原题设置,满分 80 80 80

代码如下

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


int max(int a, int b)
{
	if(a > b)
		return a;
	else
		return b;
}
int n,c,ans=-1e9,a[1005];
int main() {
	scanf("%d%d",&n,&c);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<=n;i++){
		int sum=0,cnt=0;
		for(int j=i;j<=n;j++){
			if(sum+a[j]<=c)
				sum+=a[j],cnt++;
			ans=max(ans,cnt);
		}
	}
	printf("%d\n",ans);
	return 0;
}

「Wdoi-4」使用三个系统程度的能力

题目背景

勘误:事实上,自从 2001 2001 2001 年发布的 MacOS X \text{MacOS X} MacOS X 之后换行符都变成了 \n \verb!\n! \n。网上发布的很多文章都存在谬误,当时出题人也没实地考察就信了。为了防止谣言继续传播,就在这里放了这段话。数据仍然以目前的题目描述为准,未做更改。


赫卡提亚·拉碧斯拉祖利是拥有三副身体,司掌月球、地球、异界三界地狱的神明。由于与纯狐结盟的缘故,赫卡提亚接触到了幻想乡,以及其他的一些现代科技。

赫卡提亚发现,在人类社会中存在三个非常通用流行的操作系统,也就是 Windows \text{Windows} Windows Linux \text{Linux} Linux Mac \text{Mac} Mac。这三者就像是赫卡提亚本人的三个身体般,分别占据了很大的市场。

但是赫卡提亚又发现,尽管这三个系统之间的文件可以通过一些方式进行信息流通,可是毕竟存在一些区别:例如换行方面采用的字符的不同。赫卡提亚对此非常感兴趣。

现在赫卡提亚不知道从哪里搞来了一个系统的文本文件,她想知道这个文件是在哪个系统里编辑而成的。你能写个程序帮帮她吗?

题目描述

Windows \text{Windows} Windows Linux \text{Linux} Linux Mac \text{Mac} Mac 系统下,分别采用了三种不同的换行符方式。表示为显式转义符,分别是 \r\n \verb!\r\n! \r\n \n \verb!\n! \n \r \verb!\r! \r 。现在有一份已经写好了的非空文本文件(里面仅由大小写英文字母、下划线、阿拉伯数字、空格,以及换行符组成)。这个文本文件是在单一系统中写成的,因此保证换行符只会出现上述三种情况之一

比如,这是一个合法的文本文件:

SCP2021 J rp plus plus
chen zhe AK IOI

Welcome to Hell

现在将其中的换行变为对应的转义符。那么在上述三个系统中,分别会变为以下三种模样:

  • Windows \text{Windows} Windows 系统:

SCP2021 J rp plus plus\r\nchen zhe AK IOI\r\n\r\nWelcome to Hell \colorbox{f5f5f5}{\verb!SCP2021 J rp plus plus\r\nchen zhe AK IOI\r\n\r\nWelcome to Hell!} SCP2021 J rp plus plus\r\nchen zhe AK IOI\r\n\r\nWelcome to Hell

  • Linux \text{Linux} Linux 系统:

SCP2021 J rp plus plus\nchen zhe AK IOI\n\nWelcome to Hell \colorbox{f5f5f5}{\verb!SCP2021 J rp plus plus\nchen zhe AK IOI\n\nWelcome to Hell!\kern{31.5pt}} SCP2021 J rp plus plus\nchen zhe AK IOI\n\nWelcome to Hell

  • Mac \text{Mac} Mac 系统:

SCP2021 J rp plus plus\rchen zhe AK IOI\r\rWelcome to Hell \colorbox{f5f5f5}{\verb!SCP2021 J rp plus plus\rchen zhe AK IOI\r\rWelcome to Hell!\kern{31.5pt}} SCP2021 J rp plus plus\rchen zhe AK IOI\r\rWelcome to Hell


现在你被给定的任务是,根据转换后的文本文件,判断这是哪个系统下编写的文本文件。对于上述三种情况,分别输出 windowslinuxmac

输入格式

输入共一行,为转换后的文本文件。保证文本文件非空,且转换前至少有一个换行符。输入可能包含空格。

输出格式

输出一行一个小写单词,输出此文本文件在哪个系统下编写。

样例 #1

样例输入 #1

SCP2021RPplusplus\nchenzheAKIOI\n1plus1equalto2\n

样例输出 #1

linux

样例 #2

样例输入 #2

chen_zhe AK IOI\r\nchen_zhe AK NOI\r\n

样例输出 #2

windows

样例 #3

样例输入 #3

include iostream\rsigned main return 0\r

样例输出 #3

mac

提示

样例 4 4 4 见下发的附件 system4.in / system4.out \textbf{\textit{system4.in}/\textit{system4.out}} system4.in/system4.out

数据范围
  • 对于 40 % 40\% 40% 的数据,保证不存在空格。
  • 对于 100 % 100\% 100% 的数据,保证输入字符串的长度 ≤ 1 0 5 \le 10^5 105。输入中仅包含大写英文字母、小写英文字母、下划线、数字、空格和转义字符(\r\n)。
注意

本题中的 \n\r 表示直接写在输入里的一个反斜杠符号跟着一个小写字母 nr,而不是一个真正的转义字符。

代码如下

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


char s[100001];
int main(){
    fgets(s,100001,stdin); //fgets 的功能为从指定的流中读取数据,每次读取一行
    if(strstr(s,"\\r\\n")) printf("windows");
    else if(strstr(s,"\\n")) printf("linux");
    else printf("mac");
}

『JROI-3』R.I.P.

题目背景

请不要在下方视频或歌曲里刷洛谷相关!

请尊重曲师,也尊重逝去的人。

Her Requiem

我想要肯定你的伦理 但是那是无法实现的

落幕 ……


“早上好,早上了哟。”

声音 停滞
解去枷锁的双手 毫不犹豫地向前舒展
那片盛开的花 与放晴的此世都如此美丽 痛苦于此已再无痕迹


R.I.P. \Large \text{R.I.P.} R.I.P.
1997.1.30   −   2018.3.21 1997.1.30\ -\ 2018.3.21 1997.1.30  2018.3.21

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SgSqCZqD-1662016953593)(bilibili:BV1fb411w7Qj)]

题目描述

你被曲师女性朋友的故事感动哭了,于是你准备玩起 MC。

你需要用栅栏框住一个长方形区域,假设这个长方形区域大小为 a × b a \times b a×b 个像素格,则需要长为 a + 1 a+1 a+1,宽为 b + 1 b+1 b+1 规模的栅栏框住这个区域。

现在你发现他的羊和牛需要恰好 n n n 个像素格才够生存,而你的背包里有 m m m 个栅栏,你想知道,你用你所拥有的的栅栏是否能框出 n n n 个像素格?

不需要用光所有栅栏,只要框出区域大小为 n n n 个像素格的长方形即可。

注意,上面的 a , b , n , m a,b,n,m a,b,n,m 都应是整数。

输入格式

第一行一个整数 T T T,表示测试组数。

接下来 T T T 行,一行两个整数 n , m n,m n,m,同题意。

输出格式

一行一个字符串,如果可行输出 Good,如果不可行输出 Miss

样例 #1

样例输入 #1

2
4 1
4 20

样例输出 #1

Miss
Good

提示

样例 1 解释

第一组数据:

实测可证,无法用 1 1 1 个栅栏围出 4 4 4 个像素格。

第二组数据:

可以考虑围出如下 4 = 1 × 4 4=1 \times 4 4=1×4 的像素格。

用下方的方式只需要用 14 14 14 个栅栏即可。

栅栏宽为 1 + 1 = 2 1+1=2 1+1=2,长为 4 + 1 = 5 4+1=5 4+1=5 ( 2 + 5 ) × 2 = 14 (2+5) \times 2=14 (2+5)×2=14

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(30 pts): 1 ≤ n , m ≤ 1 0 4 1\le n,m \le 10^4 1n,m104 T ≤ 1 0 3 T \leq 10^3 T103
  • Subtask 2(70 pts): 1 ≤ n , m ≤ 1 0 8 1\le n,m \le 10^{8} 1n,m108 T ≤ 1 0 3 T \leq 10^3 T103

在本题中栅栏是抽象化的而非具象化的,即栅栏将会退化成一个点而非一个方格,也就是我们可以通过求周长的方式求出一个栅栏框所需消耗的栅栏(如果不理解可以看看样例 1 解释)。

代码如下

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


int main(){
    int t,n,m,ii,jj;
    scanf("%d",&t);
    for(int i=1;i<=t;i++){
        scanf("%d%d",&n,&m);
        for(int j=1;j<=sqrt(n)+1;j++){
            if(n%j==0){//求长和宽
                ii=j;
                jj=n/j;
            }
        }
        if(ii*2+jj*2+4<=m) printf("Good\n");
        else printf("Miss\n");
        //cout<<ii<<' '<<jj<<endl;
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值