LDUOJ——2022/10/21 2022级第二次ACM测试

发布于 2022-10-21  293 次阅读


前言

果然我还是太弱了5555

好难啊(叹)

题目

1.河神的签到题

描述

河神划水的途中,想出个签到题卡住所有人,即将AK的你站了出来 。

河神会给你一个二元一次方程ax+by+c=0(a和b的最大公约数为1),需要你判断x,y是否存在整数解并且x和y不能同时为0。

输入

河神会给你三个整数a,b,c。

输出

如果x,y存在整数解,输出Yes, 否则输出No。

输入:1000000007 1000000006 13216549872341

输出:Yes

代码

解析

2.涛涛的矩阵

描述

早已AK的涛涛,定义了如下的矩阵:

若有3行3列:

若有4行4列:

现涛涛会给你三个数n,m,k。n,m表示矩阵的行高和列宽,需要你计算出k值在第几行第几列。

注:矩阵的左上角为第一行第一列。

输入

n,m,k,详情请看题意!!!

输出

输出两个数,表示行与列。

输入:3 3 9

输出:3 3

输入:4 4 7

输出:2 2

代码

提示

数据范围:

1≤n,m≤1e18

n∗m≤1e18

1≤k≤n∗m

解析

3.无题

描述

蒟蒻欢欢会给你两条线段,即会给你四个点,每两个点为一条线段,需要你判断两条线段所在的直线之间的位置关系!!!

注:输入的数均为整数!!!

输入

  • x1,y1,x2,y2,第一条线段的两点坐标
  • x3,y3,x4,y4,第二条线段的两点坐标

输出

若平行,输出He Shen Tql

若垂直,输出Tao Tao Tql

若相交,输出Huan Huan Trl

代码

提示

数据范围:

所有的数的绝对值均小于等于1e9

解析

4.找朋友

描述

考试周刚过,610的ssssst又在辛苦的刷题了,但是身为巨巨的他怎么能够感觉到online judge上的题能够难到他呢?

Ssssst 平时最喜欢做 AC自动机fail树上建可持久化线段树和后缀自动机next指针DAG图上求SG函数的题了,PushyTao知道了ssssst 的爱好之后,直接給他送去998244353道这种题,但是却忘记了ssssst 的宿舍在第几层了

PushyTao知道ssssst 所在的宿舍楼有点奇葩,第一层有两个宿舍,分别是1号宿舍和2号宿舍,然后其它层每一层都xx个宿舍。

当你读到这里,身为巨巨的Ssssst这时候已经等不及了!!!! ssssst说,我在n号宿舍等着你呢,怎么还不来!?!?!?!

 这个时候PushyTao打开编译器就是一顿操作,然后意想不到的事情发生了!!!

现在PushyTao求你来帮帮他,告诉PushyTao在第几层

输入

输入两个整数n和x,分别表示ssssst在第几号宿舍,和除了第一层之外每层宿舍的个数

输出

输出一个数表示ssssst的宿舍在第几层

输入:7 3

输出:3

输入:1 5

输出:1

输入:22 5

输出:5

提示

Note: 数据范围 1≤T,n,x≤1000

第一个样例解释:除去第一层的1,2号之外,第二层有3,4,5号宿舍,第三层有6,7,8号宿舍,所以此时ssssst在第三层

代码

#include<stdio.h>
int main()
{
    int n,x,a,m;
    scanf("%d %d",&n,&x);
    if(n==1||n==2)
    {
        printf("1");
    }
    else
    {
    if((n-2)%x!=0)
    {
        a = (n-2)/x+2;
    }
    else
    {
        a = (n-2)/x+1;
    }
    printf("%d",a);
    }
    return 0;
}

解析

注意恰好为每一层最后一户的情况

将在第一层的情况单独讨论

5.欢欢的数字

描述

你们的欢欢学长认为一个只含有不超过一位非零数字的数是美丽的数字,你们要做的就是找到当前这个数字和比它大的第一个美丽数字的差值的绝对值

输入

多组输入,请处理到文件结束,答案保证在int范围内

输出

如题

输入:1

输出:1

输入:15

输出:5

输入:201
输出:99

代码

解析

6.不会真有人以为这是博弈论吧

描述

众所周知,在610里radical和sssssst是好朋友,在课余时间完成了任务之后,他们就喜欢玩游戏。

一天,radical和sssssst都完成了这一天第998244353个题,所以他们决定玩一个叫做博弈论的游戏。

由于radical和sssssst都是巨巨,所以他们都会膜法,radical的咒语就是radical!,而sssssst的咒语是“冰心一出,游戏结束!”

游戏规则是:对于一个初始值 0 ,每次radical念完咒语之后可以使得这个值+2,而sssssst可以使前一个数+3,radical先来,然后sssssst再操作,经过k轮之后,如果这个数能够超过限制值limit,就输出 “Radical!”,反之就输出”Game over!”.

输入

输入两个数k和limit,分别表示游戏的次数和最后的限制值limit

输出

一个字符串,如果经过k轮操作之后能够超过limit,就输出“Radical!”,反之就输出”Game over!”

输入:5 20

输出:Radical!

输入:4 20

输出:Game over!

代码

解析

7.判题姬

描述

前一段时间Codeforces的判题姬不太给力导致几场div2变成了unrated,这就让610的Legendary Grandmaster Master J十分伤心,错失了大好的上分机会,于是找来了判题姬LOCAL棒棒童!!!

 由于Master J深夜刷DFS,使得自己的搜索技能变得非常强!!!

Master J心里想,一定要写一个搜索,直接搜爆服务器(手动斜眼笑)

众所周知,判题姬LOCAL 棒棒童的算力很强,但是Master J还是心慈手软的给了判题姬几个简单题

输入三个整数代表三角形的三条边,首先判断能不能构成三角形,如果不能够构成三角形,就输出”Nonono”(不包括引号);如果能构成三角形,并且是等边三角形就输出“You can really dance!”以及面积和周长(格式参考样例输出,面积保存到小数点后7位),否则就输出”Yes,okay”.

输入

三个整数a,b,c表示三角形的三条边

输出

构成等边三角形输出三行,第一行是“You can really dance!”,第二行是三角形的面积,第三行是三角形的周长;构成普通三角形输出“Yes,okay”;不能构成三角形则输出”Nonono”

输入:4 4 4

输出:

You can really dance!
6.9282032
12

输入:3 4 5

输出:Yes,okay

输入:1 6 10

输出:Nonono

提示

数据范围1≤a,b,c≤10000

代码

解析

8.爱看如懿传的wsq

描述

实验室的wsq特别喜欢看如懿传,没有如懿传她就要死掉了。而当有如懿传的时候她就会特别大方的发糖给大家吃。由于wsq特别有钱所以他买了很多糖,但是店家的包装出了问题,导致每一包的糖数量都不一样,而且少了很多,家里有矿但wsq一点都不在乎,但是当她看如懿传是却犯了难因为每一包的糖数量都不一样,他没有办法平分给每个人了。

现在wsq有nn包糖,每一包的数量分别是1,2,3,…,n1,2,3,…,n。她可以将两包糖倒在一起变成一包糖。尽管可能让拿到糖的人变少,但wsq不在乎,反正如懿传总共有87集,而且她还有可能看不止一次,现在你要求出她能拥有最大数量的相同数量的糖。

输入

一个t(t≤1000),t组输入,每组一个nn(n<1e9)。

输出

wsq最多能获得多少包相同数量的糖。

输入:

4
1
2
3
4

输出:

1
1
2
2

代码

解析

9.Cutele的梦境

描述

众所周知Cutele学姐是一个集才华与美貌于一身的Acmer。有一天她因为做了太多的题了,回到宿舍躺下就睡着了,并且进入了一个梦境。她梦见自己当了一个公司的老板,要给决定给员工加薪,加薪情况如下所示:

薪水->涨薪幅度 

0 - 400.00 -> 15% 

400.01 - 800.00 -> 12% 

800.01 - 1200.00 -> 10% 

1200.01 - 2000.00 -> 7% 

超过 2000.00 -> 4% 

读取员工的工资,计算并输出员工的新工资,以及员工增加的收入和涨薪幅度。

输入

共一行,包含一个保留两位小数的浮点数。0≤原工资≤2500.00

输出

输出格式如下所示: 第一行输出 Novo salario: X,X表示员工新工资,按照四舍五入保留两位小数 第二行输出 Reajuste ganho: Y,Y表示员工增加的具体收入数值,按照四舍五入保留两位小数 第三行输出 Em percentual: Z,Z表示涨薪幅度,注意用百分比表示。

输入:400.00

输出:

Novo salario: 460.00
Reajuste ganho: 60.00
Em percentual: 15 %

代码

解析

10.江江老师的魔法阵

描述

众所周知江江老师是一个非常可爱的老师,他非常喜欢画魔法阵。但是这一天他被自己困在了自己的魔法阵出不来,但是江江老师认为自己一定可以破解自己的这个魔法阵,因此他记下来了自己开始破阵的时间,并在从魔法阵里逃出来的时候也记下了此刻的时间,其中 A 和 B 为开始时刻的小时和分钟数,C 和 D 为结束时刻的小时和分钟数。破阵最短持续 1 分钟,最长持续 24 小时。(因为24小时之后江江老师会被自己的魔法阵吞噬)

输入

共一行,包含四个整数 A,B,C,D。0≤A,C≤23, 0≤B,D≤59

输出

输出格式为X hour(s) Y min(s),表示游戏共持续了 X小时 Y 分钟。

输入:7 7 7 7

输出:24 hour(s) 0 min(s)

代码

#include<stdio.h>
int main()
{
    int a,b,c,d,n,m,x=0;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    if(c<=a)
    {
        c = c + 24;
    }
    if(d<b)
    {
        d = d + 60;
        x = 1;
    }
    n = c - a - x;
    m = d - b;
    printf("%d hour(s) %d min(s)",n,m);
    return 0;
}

解析

注意过了一天之后小时从0开始计算

分钟同理

11.三角形和梯形

描述

亲爱的LDUer:“真正且持久的掌声和鲜花只会出现在终点线”。 给你三个浮点数 A,B, C,问能否构成三角形,如果可以则输出此三角形的周长 Triangle = x.x,否则计算并输出以 A 和 B为底以 C 为高的梯形面积:Trapezoid = x.x。结果保留一位小数

输入

共一行,包含三个浮点数 A,B,C (0 < A,B,C<100.0)

输出

按题目描述格式,输出答案,答案保留一位小数。

输入:6.0 4.0 2.0

输出:Trapezoid = 10.0

代码

解析

12.猜点数

描述

小孙和小王同学最近玩心大起,他们想通过猜骰子点数的方式决定谁去买饭。现在有三个骰子,小孙和小王各自说一个数(a和b),如果骰子中出现点数a但是没出现点数b,则小孙胜利,如果出现点数b但是没出现点数a,则小王胜利,如果都没出现或者都出现,则视为平局。现给你a,b和三个骰子的点数x1,x2,x3,请问比赛的结果是什么?

输入

一行,五个整数a,b,x1,x2,x3(1<=a,b,x1,x2,x3<=6)

输出

一行,输出一个整数(0或1或2),0表示平局,1表示小孙赢,2表示小王赢

输入:3 6 3 1 2

输出:1

代码

#include<stdio.h>
int main()
{
    int a,b,x1,x2,x3;
    scanf("%d %d %d %d %d",&a,&b,&x1,&x2,&x3);
    if(a==x1||a==x2||a==x3)
    {
        if(b==x1||b==x2||b==x3)
        {
            printf("0");
        }
        else
        {
            printf("1");
        }
    }
    else
    {
        if(b==x1||b==x2||b==x3)
        {
            printf("2");
        }
        else
        {
            printf("0");
        }
    }
    return 0;
}

解析

分类讨论

13.最大的最小间距差

描述

现有一排个数为n的正方形网格,最后一个网格被标记,现在请你再从剩下的网格中寻找两个网格标记,选择有如下限制: 1.不能选择第一个网格和最后一个网格标记 2.标记的网格不能相邻。 当你选择完剩下两个标记的位置后,从左到右第一个被标记的网格左边的普通网格数为l1,从左到右第二个被标记的网格和从左到右第三个被标记的网格之间的普通网格数为l2,从左到右第二个被标记的网格和最右侧被标记的网格之间的普通网格数为l3,请问min{ abs(l1-l2),abs(l2-l3),abs(l1-l3) }的最大值是多少

输入

一个正整数n ( 6<=n<=10^9)

输出

输出一个整数,表示min{ abs(l1-l2),abs(l2-l3),abs(l1-l3) }的最大值

输入:6

输出:0

输入:10

输出:1

输入:1033

输出:342

提示

第一组样例解释: 选择编号为2,4,6的网格作为标记,那么l1=1,l2=1,l3=1,min{abs(l1-l2),abs(l2-l3),abs(l1-l3)}=0 第二组样例解释: 选择编号为3,5,10的网格作为标记,那么l1=2,l2=1,l3=4,min{abs(l1-l2),abs(l2-l3),abs(l1-l3)}=1

代码

解析