山东科技大学第二届ACM程序设计大赛试题
ACM2th校内赛热身赛题目详解及指导书

int main() {
int y,m,d; int yy,mm,dd; int day=10000; scanf("%d%d%d",&y,&m,&d); yy=y; mm=m; day-=(mon(yy,mm)-d); while (1) {
if (mm==12) {
yy++; mm=1; } else mm++; if (day<=mon(yy,mm)) break; day-=mon(yy,mm); } dd=day; printf("%d-%d-%d\n",yy,mm,dd); return 0; }
switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:return 31;break; case 4: case 6: case 9: case 11:return 30;break;
case 2:if (y%4==0 && y%100!=0 || y%400==0) return 29; else return 28; break;
输入: 输入数据包含多组测试用例,每个测试用例的第一行包含一个整数 n,表示一共有 n 个
互不相同的点。接下来的 n 行每行包含 2 个整数 xi,yi,表示平面上第 i 个点的 x 与 y 坐标。 其中 1<=n<=50 , 0<=xi,yi<=1000。数据以 n=0 时结束,测试数据不超过 20 组。
else if ((sli[j]>=65 && sli[j]<=90 || sli[j]>=97 && sli[j]<=122) && letter==comma)
ACM题库完整版

#include<stdio.h> int type(int); char week[7][10]={"saturday","sunday","monday","tuesday","wednesday","thursday","friday"}; int year[2]={365,366}; int month[2][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31}; int main(void) { int days,dayofweek; int i=0,j=0; while(scanf("%d",&days)&&days!=-1) { dayofweek=days%7; for(i=2000;days>=year[type(i)];i++) days-=year[type(i)]; for(j=0;days>=month[type(i)][j];j++) days-=month[type(i)][j]; printf("%d-%02d-%02d%s\n",i,j+1,days+1,week[dayofweek]); } return 0; } int type(int m) { if(m%4!=0||(m%100==0&&m%400!=0)) return 0; else return 1; }
登山
1.题目描述 五一到了,NUIST-ACM队组织大家去登 山观光,队员们发现山上一个有N个景点, 并且决定按照顺序来浏览这些景点,即 每次所浏览景点的编号都要大于前一个 浏览景点的编号。同时队员们还有另一 个登山习惯,就是不连续浏览海拔相同 的两个景点,并且一旦开始下山,就不 再向上走了。队员们希望在满足上面条 件的同时,尽可能多的浏览景点,你能 帮他们找出最多可能浏览的景点数么? 2.输入 Line 1: N (2 <= N <= 1000) 景点数 Line 2: N个整数,每个景点的海拔 3.输出 最多能浏览的景点数 4.样例输入 8 186 186 150 200 160 130 197 220 5.样例输出 4
acm程序设计大赛试题

acm程序设计大赛试题ACM(Association for Computing Machinery)程序设计大赛是一项面向大学生的编程竞赛,旨在提高参赛者在算法和数据结构方面的能力。
每年都会举办多个级别的比赛,包括区域赛、国家赛和世界总决赛。
ACM程序设计大赛试题通常涵盖广泛的计算机科学和编程知识,包括但不限于以下几个方面:1. 算法和数据结构,试题可能涉及各种经典算法和数据结构的应用,如排序、查找、图论、动态规划、贪心算法等。
参赛者需要能够理解这些算法的原理和实现方法,并能够根据问题的要求选择合适的算法进行解题。
2. 编程语言和编程技巧,参赛者需要熟练掌握至少一种编程语言,通常是C++、Java或Python。
他们需要能够使用该语言进行编程,实现算法和数据结构的代码,并能够处理输入输出、异常处理等编程任务。
此外,熟练掌握一些编程技巧,如优化算法、调试代码等也是非常重要的。
3. 数学和逻辑思维,ACM程序设计大赛试题可能涉及一些数学和逻辑问题,如数论、组合数学、概率统计等。
参赛者需要具备基本的数学知识,并能够将其应用到解题过程中。
4. 实际问题的建模和解决,ACM程序设计大赛试题通常基于实际问题,参赛者需要能够将问题抽象为计算机可解决的形式,并设计出高效的算法和数据结构进行求解。
这需要参赛者具备一定的问题建模和解决能力。
5. 时间和空间复杂度分析,参赛者在解决问题时需要考虑算法的时间和空间复杂度。
他们需要能够分析算法的运行时间和所需内存,并根据比赛规则和问题要求选择合适的算法以保证程序的效率。
总的来说,ACM程序设计大赛试题要求参赛者具备扎实的计算机科学和编程基础,能够独立思考和解决复杂的问题。
参赛者需要在规定的时间内完成试题,并保证程序的正确性和效率。
通过参加ACM程序设计大赛,参赛者能够提升自己的编程能力和解决问题的能力,同时也能够与其他优秀的程序员交流和学习。
acm程序设计大赛试题

acm程序设计大赛试题题目:旅游管理系统一、问题描述随着信息技术的飞速发展,旅游业作为全球经济的重要组成部分,其管理和服务水平也在不断提升。
为了更好地服务游客,提高工作效率,我们计划开发一个旅游管理系统。
该系统旨在帮助旅游公司管理客户信息、行程安排、预订情况以及费用结算等业务。
本文将详细介绍该系统的设计要求和功能特点。
二、功能需求1. 客户信息管理系统应能够记录客户的基本信息,包括姓名、联系方式、身份证号码等。
同时,应支持对客户信息的增加、修改和查询功能。
此外,系统还应具备客户信息的分类和统计功能,便于旅游公司对客户群体进行分析。
2. 行程安排旅游公司需要根据客户需求和旅游资源情况,为客户制定合适的旅游行程。
系统应提供行程规划功能,包括景点选择、活动安排、住宿和交通预订等。
同时,系统应能够根据实际情况调整行程,并及时更新相关信息。
3. 预订管理系统应能够处理客户的旅游预订,包括景点门票、酒店房间、交通工具等。
预订管理功能应包括预订的创建、修改、取消和确认等操作,并能够实时更新预订状态,确保信息的准确性。
4. 费用结算旅游费用的结算是旅游管理系统的核心功能之一。
系统应能够根据客户的预订情况和实际消费,自动计算应付费用。
同时,系统还应支持多种支付方式,如信用卡、支付宝、微信支付等,并能够生成详细的费用清单和发票。
5. 数据安全与备份鉴于旅游管理系统中涉及大量敏感信息,系统必须具备严格的数据安全措施。
包括但不限于用户权限管理、数据加密、防止SQL注入等。
此外,系统还应定期进行数据备份,以防数据丢失或损坏。
三、系统架构设计1. 前端设计系统的前端设计应注重用户体验,界面友好、操作简便。
可以使用HTML5、CSS3和JavaScript等技术开发响应式网页,以适应不同设备和屏幕尺寸。
同时,前端应提供丰富的交互功能,如日历选择、地图展示、图片上传等。
2. 后端设计后端设计主要负责处理业务逻辑、数据存储和安全保障。
大学ACM考试题目及作业答案整理

ACM作业与答案整理1、平面分割方法:设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。
#include <iostream.h>int f(int n){if(n==1) return 2;else return f(n-1)+2*(n-1);}void main(){int n;while(1){cin>>n;cout<<f(n)<<endl;}}2、LELE的RPG难题:有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.编程全部的满足要求的涂法.#include<iostream.h>int f(int n){if(n==1) return 3;else if(n==2) return 6;else return f(n-1)+f(n-2)*2;}void main(){int n;while(1){cin>>n;cout<<f(n)<<endl;}}3、北大ACM(1942)Paths on a GridTime Limit: 1000MS Memory Limit: 30000K DescriptionImagine you are attending your math lesson at school. Once again, you are bored because your teacher tells things that you already mastered years ago (this time he's explaining that (a+b)2=a2+2ab+b2). So you decide to waste your time with drawing modern art instead.Fortunately you have a piece of squared paper and you choose a rectangle of size n*m on the paper. Let's call this rectangle together with the lines it contains a grid. Starting at the lower left corner of the grid, you move your pencil to the upper right corner, taking care that it stays on the lines and moves only to the right or up. The result is shown on the left:Really a masterpiece, isn't it? Repeating the procedure one more time, you arrive with the picture shown on the right. Now you wonder: how many different works of art can you produce?InputThe input contains several testcases. Each is specified by two unsigned 32-bit integers n and m, denoting the size of the rectangle. As you can observe, the number of lines of the corresponding grid is one more in each dimension. Input is terminated by n=m=0.OutputFor each test case output on a line the number of different art works that can be generated using the procedure described above. That is, how many paths are there on a grid where each step of the path consists of moving one unit to the right orone unit up? You may safely assume that this number fits into a 32-bit unsigned integer.Sample Input5 41 10 0Sample Output1262#include<iostream>using namespace std;long long f(long long m, long long n){if(n==0) return 1;else return f(m-1,n-1)*m/n;}int main(){long long m,n;while(scanf("%I64d %I64d",&n,&m) && n+m){printf("%I64d\n",f(m+n,min(m,n)));}return 0;}1、北大ACM(1012)JosephTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 31213 Accepted: 11700 DescriptionThe Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the life of the last remaining person will be saved. Joseph was smart enough to choose the position of the last remaining person, thus saving his life to give us the message about the incident. For example when n = 6 and m = 5 then the people will be executed in the order 5, 4, 6, 2, 3 and 1 will be saved.Suppose that there are k good guys and k bad guys. In the circle the first k are good guys and the last k bad guys. You have to determine such minimal m that all the bad guys will be executed before the first good guy.题目大意:编号为1,2…, n的n个人排成一圈,从第一个人开始,去掉后面的第m个人,在从第m+1个人开始去掉后面第m个人,以此类推。
acm算法经典例题

一、数论1: Wolf and Rabbit描述There is a hill with n holes around. The holes are signed from 0 to n-1.A rabbit must hide in one of the holes. A wolf searches the rabbit in anticlockwise order. The first hole he get into is the one signed with 0. Then he will get into the hole every m holes. For example, m=2 and n=6, the wolf will get into the holes which are signed 0,2,4,0. If the rabbit hides in the hole which signed 1,3 or 5, she will survive. So we call these holes the safe holes.输入The input starts with a positive integer P which indicates the number of test cases. Then on the following P lines,each line consists 2 positive integer m and n(0<m,n<2147483648).输出For each input m n, if safe holes exist, you should output "YES", else output "NO" in a single line.样例输入21 22 2样例输出NOYES翻译:描述一座山有n个洞,洞被标记为从0到n-1。
acm竞赛试题及答案

acm竞赛试题及答案ACM竞赛试题及答案1. 问题描述:给定一个整数数组,找出数组中没有出现的最小的正整数。
2. 输入格式:第一行包含一个整数n,表示数组的长度。
第二行包含n个整数,表示数组的元素。
3. 输出格式:输出一个整数,表示数组中没有出现的最小的正整数。
4. 样例输入:53 4 1 2 55. 样例输出:66. 问题分析:首先,我们需要理解题目要求我们找出数组中缺失的最小正整数。
这意味着我们需要检查数组中的每个元素,并确定最小的正整数是否在数组中。
7. 算法描述:- 遍历数组,使用一个哈希集合记录出现的数字。
- 从1开始,检查每个正整数是否在哈希集合中,直到找到不在集合中的最小正整数。
8. 代码实现:```pythondef find_missing_positive(nums):seen = set()for num in nums:if num <= 0:continuewhile num in seen or num > len(nums):num += 1seen.add(num)return min(set(range(1, len(nums) + 1)) - seen)```9. 测试用例:- 输入:[3, 4, -1, 1]- 输出:210. 答案解析:在给定的测试用例中,数组[3, 4, -1, 1]中没有出现的最小正整数是2。
这是因为-1不是正整数,所以可以忽略。
数组中已经出现了1和3,所以下一个最小的正整数就是2。
11. 注意事项:- 确保数组中的元素是整数。
- 考虑数组中可能包含0或负数的情况。
- 算法的时间复杂度应尽可能低。
12. 扩展思考:- 如果数组非常大,如何优化算法?- 如果数组中的元素可以是浮点数,算法应该如何修改?13. 参考答案:- 针对大数组,可以考虑使用更高效的数据结构,如平衡二叉搜索树。
- 如果元素是浮点数,需要先将其转换为整数,然后再进行处理。
acm大赛试题及答案

acm大赛试题及答案ACM大赛试题及答案1. 题目一:字符串反转问题描述:编写一个程序,输入一个字符串,输出其反转后的字符串。
输入格式:输入包含一个字符串,字符串长度不超过100。
输出格式:输出反转后的字符串。
示例:输入:hello输出:olleh答案:```pythondef reverse_string(s):return s[::-1]input_string = input().strip()print(reverse_string(input_string))```2. 题目二:计算阶乘问题描述:编写一个程序,输入一个非负整数n,输出n的阶乘。
输入格式:输入包含一个非负整数n,n不超过20。
输出格式:输出n的阶乘。
示例:输入:5输出:120答案:```pythondef factorial(n):if n == 0:return 1else:return n * factorial(n - 1)n = int(input())print(factorial(n))```3. 题目三:寻找最大数问题描述:给定一个包含n个整数的数组,找出数组中的最大数。
输入格式:输入包含一个整数n,表示数组的大小,随后是n个整数。
输出格式:输出数组中的最大数。
示例:输入:5 1 2 3 4 5输出:5答案:```pythonn = int(input())numbers = list(map(int, input().split()))max_number = max(numbers)print(max_number)```4. 题目四:判断闰年问题描述:编写一个程序,输入一个年份,判断该年份是否为闰年。
输入格式:输入包含一个整数,表示年份。
输出格式:如果输入的年份是闰年,则输出"Yes",否则输出"No"。
示例:输入:2000输出:Yes答案:```pythonyear = int(input())if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):print("Yes")else:print("No")```5. 题目五:斐波那契数列问题描述:编写一个程序,输入一个非负整数n,输出斐波那契数列的第n项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东科技大学第二届ACM程序设计大赛试题册试题共14页,题目共计12道山东科技大学第二届ACM 程序设计大赛试题册Problem A 简单计算Description给出n 个十进制的数,找出这n 个数的二进制表示中1的个数最少的数。
Input输入的第一行为一个正整数T (1≤T ≤20),代表测试数据组数。
对于每组测试数据,输入的第一行为一个正整数n (1≤n ≤10000),第二行为n个正整数A 1、A 2、…、A n (1≤A i ≤109),每个数之间以空格分隔。
Output每组数据输出一行,先输出数据组数,再输出二进制中含1最少的数,如果存在多个数符合条件,输出最小的那个。
具体输出格式见样例输出。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem B 关键字搜索Description我们的新网站具有了全新的搜索功能,使用了2个通配符“*”和“?”,其中“*”表示0或者多个小写字母,“?”代表1个字母。
当我们输入一个关键字的时候,我们在不确定的地方就使用通配符。
我们在数据库里面有多条记录,每条记录都是由小写字母组成,现在给出一个关键字,你能告诉我数据库里面有多少条与关键字相匹配的记录吗?例如: 如果关键字是j*y*m*y?,那么jiyanmoyu ,jyanmoyu ,jymyu 都是相匹配的记录。
Input第一行输入一个T (T ≤20),表示有T 组测试数据。
对于每组测试数据,第一行是输入的关键字,接下是数据库里面的所有记录的条数n ,1≤n ≤10000,每条记录的长度不超过50个小写字母。
Output对于每组测试数据,输出与关键字相匹配的总记录条数,占一行。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem C 正方形Description在二维坐标轴内给出四个点,这四个点能否构成一个正方形。
Input第一行包括一个整数:T (1≤T ≤30),表明有T 组测试数据。
下面各行有8个整数:x 1,y 1,x 2,y 2,x 3,y 3,x 4,y 4(数据均在-1000,1000之间),以逆时针顺序给出四个点的坐标。
Output对每个样例,如果是正方形,则单独在一行内输出YES ,否则,输出NO 。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem D 切蛋糕Description今年是ACM 集训队成立五周年,这是一个值得祝福的事情。
我们该送给ACM 集训队一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III 球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。
切蛋糕的人,当然非吴教主莫属。
等一等,吃蛋糕之前先考大家一个问题:如果吴教主在蛋糕上切了N 刀(教主刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢? 做不出这个题目,没有蛋糕吃的!Input第一行输出一个T (T ≤100),表示有T 组。
每组包含一个整数N (1≤N ≤1000),表示切的刀数。
Output对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。
Sample Input Sample Output山东科技大学第二届ACM程序设计大赛试题册Problem E 画笑脸Description用C语言画些任意大小的笑脸来。
画法见Sample。
InputT组数据,每组数据只有一个数N(1≤T≤20,1≤N≤20),表示笑脸的边长大小。
Output把笑脸画出来吧。
注意:不要任何多余的空格和空行,每两组数据间输出一个空行。
Sample Input3123Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem F 猜数字Description小X 最近发明了一种新游戏,他找来一堆卡片,每张卡片上都写有一个四位数,然后由两个人来玩。
玩家A 每次从这堆卡片中选择一张,然后由玩家B 告诉玩家A 他猜的数字中有几个与卡片中的相同,有几个与卡片中的位置相同。
例如,玩家A 抽到的卡片是1122。
如果玩家A 猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以玩家B 会告诉玩家A 猜对了2个数字,其中一个在正确的位置。
如果玩家A 猜1111,那么玩家B 会告诉他猜对2个数字,有2个在正确的位置。
现在给你一段游戏过程,你的任务是根据这过程来判断能否确定卡片上的四位数是什么。
Input输入数据有多组。
每组的第一行为一个正整数N (1≤N ≤100),表示共有N 次游戏过程。
在接下来的N 行中,每行三个整数x, y, z 。
玩家A 猜这个四位数为x ,然后玩家B 回答猜对了y 个数字,其中z 个在正确的位置上。
当N=0时,输入数据结束。
Output每组输入数据对应一行输出。
如果根据这段对话能确定这个四位数,则输出”Y es”,若不能,则输出"Not sure"。
Sample Input Sample Output山东科技大学第二届ACM程序设计大赛试题册山东科技大学第二届ACM 程序设计大赛试题册Problem G 排火柴Description小X 有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。
现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:,其中a i 表示第一列火柴中第i 个火柴的高度,b i 表示第二列火柴中第i 个火柴的高度。
每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。
请问得到这个最小的距离,最少需要交换多少次?如果这个数字太大,请输出这个最小交换次数对 99,999,997 取模的结果。
Input多组测试数据。
第一行输入一个数T (T ≤20),表示测试数据组数。
对于每组测试数据输入共三行。
第一行包含一个整数 n ,表示每盒中火柴的数目。
第二行有n 个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度。
第三行有n 个整数,每两个整数之间用一个空格隔开,表示第二列火柴的高度。
数据范围:1≤n ≤100,000,0≤火柴高度≤231-1。
Output每组测试数据输出一行,每行包含一个整数,表示最少交换次数对99,999,997取模的结果。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem H 原创字符串Description我们称一个字符串s 为“原创”当且仅当s 不是N 个字符串中的任意一个字符串的子串(子串:串中任意个连续字符组成的子序列)。
现在有N 个只包含小写字母的字符串,你的任务是根据给出的N 个字符串构造一个长度最小的“原创”字符串,如果存在多个长度最小的则输出字典序最小的那个。
Input对于每组测试数据,输入的第一行为一个正整数n (1≤n ≤30)代表给定字符串的大小,接下来N 行每行一个非空只包含小写字母的字符串,每个字符串长度不超过20。
输入以一行0结束。
Output输出符合要求的字符串,每组答案占一行。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册Problem I IP 的计算Description在网络课程上,我们学到了很多有关IP 的知识。
IP 全称叫网际协议,有时我们又用IP 来指代我们的IP 网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP 地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP 地址,一个IP 地址串中没有空格出现(因为要表示成一个32位数字)。
但是粗心的我,常常将IP 地址写错,现在需要你用程序来判断。
Input输入有T (T ≤20)组,每组有一行,不超过100个字符。
Output对于每组输出一行,判断输入的IP 是否正确,如果正确输出YES ,否则NO 。
Sample Input Sample Output山东科技大学第二届ACM程序设计大赛试题册Problem J 美味的蛋糕Description图1的蛋糕. 它是由5*5的小方格组成的。
图 1 图 2每个小方格都是1*1的大小,小方格上有星号表示在上面放了草莓。
现在,问题来了。
你是否可以将蛋糕分成小的正方形区域每一个区域上都正好有一个草莓。
一个可行的划分如图2所示。
Input多组测试数据。
输入第一行一个数T≤20,表示测试数据组数。
每组样例的第一行包含两个整数L(0<L<20)和N(N>0),它代表了蛋糕的大小是L*L,蛋糕上有N个草莓。
在此之后,有N行。
每一行包含两个整数x i和y i,这表示在(x i, y i)有草莓。
可以认为在同一个小方格上放置的草莓数不会超过1,这些整数之间可能有一个或多个空格。
Output如果你能找到一个可行的划分输出“YES”,否则输出“NO”。
Sample Input Sample Output山东科技大学第二届ACM 程序设计大赛试题册山东科技大学第二届ACM程序设计大赛试题册Problem K 藏头诗DescriptionACM集训队有个小伙暗恋同班的姑娘,但是苦于害羞腼腆不敢直抒胸臆。
于是小伙打算写一首英文情诗给她。
为了使这首情诗高端霸气上档次,小伙经过三天三夜的精心创作写了一首藏头的情诗。
请问你能看出他想要表达的真正内容吗?Input输入有T组(T≤20)。
每组数据第一行先输入一个整数N(N<100),表示下面要输入N行。
接下来N行,每行输入一段英文(长度小于100,只含大小写英文字母和空格)。
Output每组输出一行,为藏头诗要表达的真正内容。
Sample Input18I am a handsome manlonely and long for you attentionof all the girls I met you gave me the deepest impression Very lucky to know youearn money to make you happyyou are the worldoh be ma sideu are the happiest person in the worldSample OutputIloVeyou山东科技大学第二届ACM 程序设计大赛试题册Problem L 植树Description杰哥所在的公司业余活动很丰富,经常举行一些竞赛,游戏和其他活动,公司定期组织打乒乓球,篮球,爬山,真人cs 等等。