记录洛谷刷题C语言QAQ
[COCI2009-2010#2] FAKTOR
题目背景
分值按原题设置,满分 30 30 30。
题目描述
给定 A , I A,I A,I,求一个最小的 N N N,使得 ⌈ N A ⌉ ≥ I \lceil\frac{N}{A}\rceil\geq I ⌈AN⌉≥I。
输入格式
一行两个整数 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 1≤A,I≤100。
代码如下:
#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 的纸牌游戏,游戏只用到 A
,K
,Q
,J
,T
,9
,8
,7
共八种纸牌。
游戏规则就是将所有纸牌的值加起来,看看谁的值较大,谁就赢。每种纸牌的值都有两种,当其为特殊牌时有一个值,非特殊牌时也有一个值。每种卡牌的值见下表:
现在 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
1≤N≤100,
B
B
B 和所有纸牌的属性都属于 S
,H
,D
,C
四种字符中的一种,所有纸牌的种类都属于 A
,K
,Q
,J
,T
,9
,8
,7
共八种纸牌中的一种。
【题目来源】
题目译自 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 1≤N≤1000, 1 ≤ C ≤ 1 0 6 1\le C\le 10^6 1≤C≤106, 1 ≤ w i ≤ 1000 1\le w_i\le 1000 1≤wi≤1000。
【题目来源】
题目译自 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
现在你被给定的任务是,根据转换后的文本文件,判断这是哪个系统下编写的文本文件。对于上述三种情况,分别输出 windows
、linux
或 mac
。
输入格式
输入共一行,为转换后的文本文件。保证文本文件非空,且转换前至少有一个换行符。输入可能包含空格。
输出格式
输出一行一个小写单词,输出此文本文件在哪个系统下编写。
样例 #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
表示直接写在输入里的一个反斜杠符号跟着一个小写字母 n
或 r
,而不是一个真正的转义字符。
代码如下:
#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 1≤n,m≤104, T ≤ 1 0 3 T \leq 10^3 T≤103;
- Subtask 2(70 pts): 1 ≤ n , m ≤ 1 0 8 1\le n,m \le 10^{8} 1≤n,m≤108, T ≤ 1 0 3 T \leq 10^3 T≤103。
在本题中栅栏是抽象化的而非具象化的,即栅栏将会退化成一个点而非一个方格,也就是我们可以通过求周长的方式求出一个栅栏框所需消耗的栅栏(如果不理解可以看看样例 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;
}
}