暑期班第一次测试

2018年暑期
信息体验营测试

须知:
每题10分,共10题,总分100分
考试时间:180分钟
测试点时限统一为1s
内存限制统一为256MB
每题10个测试点

温馨提示:
考试不要慌,不会就上个厕所啥的orz
能多拿分就多拿分哪怕只是部分分
仔细看题

Problem 1
计算器(songfen)
问题描述

自从学习了OI以后,AZe便不满足于使用普通的计算器了,她想实现一个可以进行取余运算的计算器,于是她就来请你帮忙实现这个计算器。
给你两个整数A, B和一个运算符号代表要进行的运算,计算答案并输出。
如果计算公式无效,输出“error”(不输出引号)。

输入格式

输入的第一行为两个整数A,B(-2^40<=A,B<=2^40)。
第二行为一个运算符号,运算符号是‘+’,‘-’,‘*’,‘/’,‘%’的一种。

输出格式

一个整数或者字符串代表他的答案。

输入样例一

1 1
+

输出样例一

2

输入样例二

2 4
*

输出样例二

8

数据范围与约定

对于100%的数据,保证-2^40<=A,B<=2^40。
除法运算保证均能被整除。

Problem 2
征兵条件(condition)
问题描述

当兵入伍的基本条件是对逻辑的摧残,条件是这样的:
一、年龄大于15并且小于等于18;
二、身高大于160,且小于等于180;
三、此外身高小于120且年龄刚好等于16的可以作为“童子特战队”入伍;
四、以上条件都不满足,但是受到老韩特别青睐的也可以!
给你特定条件,判断是否可以入伍,可以输出“ACCEPT”,不可以输出“REJECT”。

输入格式

第一行为两个整数a,b。分别代表这个人的年龄与身高。
第二行是一个字符c,‘Y’代表老韩特别青睐,‘N’代表老韩不青睐。

输出格式

输出你给出的答案,可以输出“ACCEPT”,不可以输出“REJECT”。

输入样例一

17 170
N

输出样例一

ACCEPT

输入样例二

21 168
N

输出样例二

REJECT

数据范围与约定

对于100%的数据,保证0<=a<=100,80<=b<=200,c只能为‘Y’或‘N’。

Problem 3
犹大(judas)

问题描述

世界第一可爱的德丽莎想要临摹她的犹大(十字架),但她要去和逛游乐场,她就把这个艰巨的任务交给了可怜的你。
十字架比例如图,给你a的值以及一个字符,请用这个字符画出十字架。

输入格式

一个数a以及字符c。

输出格式

用字符c画的十字架。

输入样例一

1 *

输出样例一






数据范围与约定

a<=10

Problem 4
幻想月面战争(war)

问题描述
这是千年之前的事了。紫玩弄着虚与实的境界,飞去入侵照映湖面的月球。虽然聚集了大量妖怪,不过面对月之近代兵器,结果惨败(其实是懒得打了)。至此之后,妖怪们就很少再去入侵不属于自己的领域了。因为这骚动,月人(兔)之间也知道了这只境界妖怪的力量。
八云紫聚集了一些妖怪,这些妖怪分布在 n 个位置上。她想要攻打月之都,就要给妖怪排好适当的阵型。她要排 m 个阵型,为了排阵型,她要知道从位置 i 到 j 内妖怪的数目。
输入格式
第一行是整数n和m分别代表妖怪的位置数目和询问的个数。
第二行是n个数,第i个代表i号位置上妖怪的数目。
下来m行一行三个整数k与i与j:
若k==1,说明紫想知道从位置i到j内妖怪的数量和;
若k==2,说明紫想知道从位置i到j内妖怪的数量的最大值;
若k==3,说明紫想知道从位置i到j内妖怪的数量的最小值。

输出格式

对于每个询问,输出一个整数,代表那个询问的答案。
每输出完一个答案换行。

输入样例

7 4
1 19 12 5 13 1 2
1 4 7
1 2 6
1 1 3
1 4 4

输出样例

21
50
32
5

数据范围与约定

对于30%的数据,所有位置的妖怪数目均为1,n≤20,m≤2。

对于70%的数据,所有位置的妖怪数目均相等 n≤20,m≤2。
对于100%的数据,n≤3000,m≤700,所有位置的妖怪数目都≤200。

Problem 5
乘法表(multiply)

问题描述

猪猪是小猪学校里最聪明的一只猪!它不只可以背出九九乘法表,还可以背出从m到n的乘法表!
现在它想向你挑战,请编程解决这个问题。当然,为了防止你被庞大的数据量吓怕,猪猪决定保证0<=n-m<=500。

输入格式

一行,两个数, m和n。

输出格式

输出从m到n间的乘法表,详细格式见样例。

输入样例一

1 9

输出样例一

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

输入样例二

125 130

输出样例二

15625 15750 15875 16000 16125 16250
15750 15876 16002 16128 16254 16380
15875 16002 16129 16256 16383 16510
16000 16128 16256 16384 16512 16640
16125 16254 16383 16512 16641 16770
16250 16380 16510 16640 16770 16900

数据范围与约定

对于100%的数据,0<=m<=n<=10^6且0<=n-m<=500.
要求同一行的输出以空格间隔,行首行末均没有空格。

Problem 6
外星旅行(traval)
问题描述

现代科学中有一派理论认为,之所以人们普遍采用十进制计数法是由于人一共有十只手指。
有一天,西蒙•胡塞•德•拉•桑迪西玛搭乘宇宙飞船去X星旅行,当地人一共有k只手指,也就是说,当地人在交流时使用的进制是k进制。
于是问题来了,西蒙•胡塞•德•拉•桑迪西玛在与当地人交流时必须把十进制的数字转变为k进制,这使他烦不胜烦,于是西蒙•胡塞•德•拉•桑迪西玛请求你来帮助他,
并且他希望倒序输出所有的结果。

输入格式

第一行为两个正整数n和k, 其中k为X星人采用的进制,n为待转变为k进制的数字的个数。
第2-n+1行各给出一个待转变的十进制正整数。

输出格式

输出共计n行,其中第i行为一个k进制整数,为第n-i+1个正整数转变后的结果(1<=i<=n)。

输入样例

3 8
16
27
39

输出样例

47
33
20

提示: 使用函数进行处理。

数据范围与约定

 对于100%的数据,n<=10^5, 2<=k<=10, 其他十进制数字在1到2^50之间。

Problem 7
落照(sunset)
问题背景

自有人类以来
不知有多少次落日时光
直到有一天,一个人面对落霞
突然“呀”了一声
人类的文明从此开始。

问题描述

在古老西方的希腊,人们采取一种奇特的方式记录日期。
第 1、2 天均用 1 表示,其后每天之日期为昨天和前天日期之和。即第 i 天的日期f(i) 等于 1, i <= 2,f(i - 1) + f(i - 2), i > 2。
某天落日之时,狄奥根尼手中的灯笼悄然坠落。潜滋暗长的黑暗笼罩了文明的一切痕迹——宏伟的殿堂,金色的雕塑,熙攘的人群。
“正是我的理想。”狄奥根尼(古希腊犬儒派哲学家)轻声说。他的思绪飞驰到过去的一幕幕,他蓬头赤脚逍遥自在,他像个乞丐无数次被哂笑,他希望普罗米修斯带来的东西付之一炬,他只有梦中闪现远古的呼唤。
当他的记忆来到第 r 天,他希望知道第r天的日期。

输入格式

第一行两个整数,询问次数 n。
之后 n 行,每行一个整数 r 代表第几天。

输出格式

对每次询问,输出一行一个整数,代表第 r天的日期与 20180801 取余的值。“模”(余数)运算在 C/C++ 的运算符为 %。

输入样例

2
5
7

输出样例

5
13

数据范围与约定

对 70% 数据,n <= 100, r<=100。

对所有数据,n <= 1000,r <= 100000。

#include<iostream>
#include<cmath>
using namespace std;
int r[1000010];
int b[1000010];
int main()
{

    int n,i,j;
    cin>>n;
    for(int i=3;i<=1000000;i++)
    {
        r[1]=1;
        r[2]=1;
        r[i]=r[i-1]+r[i-2];
        r[i]=r[i]%20180801;//防溢出 
    }
    for(j=1;j<=n;j++)
    {
    cin>>b[j];  
    }
    for(j=1;j<=n;j++)
    cout<<r[b[j]]<<endl;    
    return 0;
} 

Problem 8
A % B 问题(amodb)
问题描述

本题(几乎)等价于洛谷 P1865,因此 0xis 直接搬运了原题名称。本题询问区间质数个数(注意,“输出格式”有重要信息)。

输入格式

第一行两个整数,范围 n 和询问次数 m。
之后 m 行,每行两个整数 l 和 r 代表区间。

输出格式

对每次询问,输出一行一个整数代表闭区间 [l, r] 内质数个数。
“闭区间”包含两端,如 [2, 5] 指 {2, 3, 4, 5}。

输入样例一

5 2
1 3
4 5

输出样例一

2
1

数据范围与约定

对 30% 数据,n <= 100。

对 70% 数据,n <= 10000。
对所有数据,n <= 500000,m <= 1000,1 <= l < r <= n。

Problem 9
普通题(simple)

问题描述

老韩让书名号出一道简单题,于是他出了n道题(1-n),让鱼人们去做,并让它们给出每道题的普通指数ai,你能帮帮书名号,帮他把题目按照普通度排序么?
一句话题意:给出n个权值,按照权值从小到大将编号排序。
数据保证权值不重复。

输入格式

第一行一个整数n,代表题目的数量。
第二行n个数字,代表每道题的权值。

输出格式

一行,数字间用空格隔开。

输入样例

10
10 20 30 40 90 80 70 60 50 100

输出样例

1 2 3 4 9 8 7 6 5 10

数据范围与约定

0<=n<=1000000,0<=ai<=1000000。
提示:对于30%的数据,O(n²)会TLE,也许你可以先看看下一道题?

//方法1

Problem 10
简单题(easy)

问题描述

老韩让书名号出一道简单题,于是他出了n道题(1-n),让鱼人们去做,并让它们说出最简单的一道题,但鱼人们众口不一,你能帮帮书名号,帮他选出来最简单的题么?
一句话题意:给出n个数,求众数,若众数不唯一,请按数字顺序依次输出。

输入格式

第一行两个整数n,m,代表题目的数量和鱼人的数量。
第二行m个数字,代表每个鱼人认为最简单题目的编号。

输出格式

一行,数字间用空格隔开。

输入样例

5 11
1 2 3 4 5 1 2 3 4 5 1

输出样例

1

数据范围与约定

n,m<=10000000,对于30%的数据保证众数唯一。

#include<iostream>
using namespace std;
int d[10000010];

int main(){
    int n, m;
    cin>>n>>m;
    //使用桶计数 
    for(int i=1; i<=m; i++){
        int no;
        cin>>no;
        d[no]++;
    }
    //找难度最大的题的难度 
    int zdz=-1;
    for(int i=1; i<=n; i++)
        if(d[i]>zdz)
            zdz=d[i];
    //找难度最大的题的题号 
    int flag=1; 
    for(int i=1; i<=n; i++)
        if(d[i]==zdz)
            if(flag){
                cout<<i;
                flag=0;
            }else
                cout<<" "<<i;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/haoff_20/article/details/81636390