当前位置:文档之家› ACM练习题

ACM练习题

ACM练习题
ACM练习题

ACM练习题

(1)描述

浙江工商大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。

童心未泯的redraiment就经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。一点也不像大学生,还是一副老不正经的样子,呵呵。

随着鸽子和兔子数目的增多,redraiment带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的,redraiment决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食物。一、二、三、四、五...他开始数了。

现在,他已经知道有这些鸽子和兔子一共有n个头和m只脚。请你帮他写个程序计算一下一共有多少只鸽子和兔子。

输入

输入包括多组数据。

每行包括2个数据:n、m(代表上面题目中提到的意思1≤n, m≤230)。

n、m都是整数。

输入以0 0作为结束。

输出

每组数据的输出都只有一行,分别是鸽子的数量和兔子数量。

如果输入的测试数据不能求得结果,那肯定是redraiment这个马大哈数错了,就输出"Error"提示他。

样例输入

35 94

1 3

0 0

样例输出

23 12

Error

(2)念数字

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 727 测试通过: 316

描述

编一个“念数字”的程序,它能让计算机完成以下工作:当你输入一个0至99 之间的数后,计算机就会用汉语拼音印出这个数。

如果输入的数不在0到99 之间,就印出“CUO LE”。

注:为了使不熟悉汉语拼音的同学也能做这个题,把“零,一,二,三,……,九,十”的

拼音法写在下面。

零LING 一YI 二ER 三SAN 四SI 五WU

六LIU 七QI 八BA 九JIU 十SHI

输入

输入数据有多组,每组数据占一行,内容为一个数字,数据以EOF作为结束。输出

输出对应的汉语拼音,字母全部为大写。每组数据占一行

样例输入

35

11

100

样例输出

SAN SHI WU

LING

SHI YI

CUO LE

(3)University

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 698 测试通过: 304

描述

在大学里,很多单词都是一词多义,偶尔在文章里还要用引申义。这困扰Redraiment很长的时间。

他开始搜集那些单词的所有意义。他发现了一些规律,例如

“a”能用“e”来代替, “c”能用“f”来代替……

现在他给出了字母的替换规则,如下所示,A被E替换,B被C替换,依次类推。

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

E C

F A J K L B D

G

H

I V W Z Y M N O P Q R S T U X

a b c d e f g h i j k l m n o p q r s t u v w x y z

e r w q t y g h b n u i o p s j k d l

f a z x c v m

输入

本题包括多组测试数据。

每组测试数据为一行:为仅由字母和空格组成的字符串(空格不变)。

输入以单行“#”结束。

输出

对应每组测试数据,替换后输出它的引申义。

样例输入

Ilttabaje zaujljg

#

样例输出

Different meaning

(4)Least Common Multiple

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 956 测试通过: 335

描述

求n个数的最小公倍数。

输入

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

输出

为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

样例输入

2 4 6

3 2 5 7

样例输出

12

70

(5)求奇数的乘积

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1049 测试通过: 577

描述

给你n个整数,求他们中所有奇数的乘积。

输入

输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

输出

输出每组数中的所有奇数的乘积,对于测试实例,输出一行。

样例输入

3 1 2 3

4 2 3 4 5

样例输出

3

15

(6)平方和与立方和

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1377 测试通过: 469

描述

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

输入

输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。

输出

对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。

你可以认为32位整数足以保存结果。

样例输入

1 3

2 5

样例输出

4 28

20 152

(7)绝对值排序

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1008 测试通过: 555

描述

输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。

输入

输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。

输出

对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。

样例输入

3 3 -

4 2

4 0 1 2 -3

样例输出

-4 3 2

-3 2 1 0

(8)JudgeOnline

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 440 测试通过: 202

描述

TZC终于也要有自己的JudgeOnline了!

但浏览器是不能直接显示一些特殊字符的。为了把选手的代码显示给大家看,需要把一些特殊的符号换成HTML标签。

比如:

1.'<'需要换成"<"

2.'>'需要换成">"

3.' '(空格)需要换成" "

4.' '(TAB符)需要换成" "

5.其他字符保持不变。

现在请你来完成这项工作。

输入

输入一段代码(可能有多行),把里面的符号按上面的规则替换掉。

输出

输出替换好的代码。

样例输入

#include

int main(void)

{

return 0;

}

样例输出

#include

int main(void)

{

return 0;

}

(9)蟠桃记

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 808 测试通过: 505

描述

孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n 天准备吃的时候只剩下一个桃子。这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候桃子一共有多少个桃子。

输入

输入数据有多组,每组占一行,包含一个正整数n(1≤n≤30),表示只剩下一个桃子的时候是在第n天发生的。

输入以0结束。

输出

对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。样例输入

2

4

样例输出

4

22

(10)C语言实验题——三个整数

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 3683 测试通过: 1494

描述

给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。

输入

输入只有三个正整数a、b、c。

输出

输出一行,包括三个的和、乘积、平均数。

数据之间用一个空格隔开,其中平均数保留小数后面两位。

样例输入

1 2 3

样例输出

6 6 2.00

(11)C语言实验题——大小写转换

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1326 测试通过: 798

把一个字符串里所有的大写字母换成小写字母,小写字母换成大写字母。其他字符保持不变。

输入

输入为一行字符串,其中不含空格。长度不超过80个字符。

输出

输出转换好的字符串。

样例输入

ABCDefgh123

样例输出

abcdEFGH123

(12)C语言实验题——分数序列

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1916 测试通过: 1033

描述

有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。

输入

输入只有一个正整数n,1≤n≤10。

输出

输出改序列前n项和,结果保留小数后6位。

样例输入

3

样例输出

5.166667

结果需要用double类型来保存。

(13)C语言实验题——最值

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 2507 测试通过: 614

描述

有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入

输入包括两行。

第一行为正整数n(1≤n≤10)。

第二行为n个正整数组成的序列。

输出

输出转换好的序列。数据之间用空格隔开。

样例输入

5

2 1 5 4 3

样例输出

1 2 3 4 5

(14)C语言实验题——时间间隔

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1373 测试通过: 513

描述

从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。

输入

输入包括两行。

第一行为时间点1。

第二行为时间点2。

输出

以“小时:分钟:秒”的格式输出时间间隔。

格式参看输入输出。

样例输入

12:01:12

13:09:43

样例输出

1:08:31

(15)C语言实验题——分割整数

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte 总提交: 840 测试通过: 540

描述

从键盘输入一个长正整数(不超过10位),从高位开始逐位分割并输出。输入

正整数n,不含前导零。

输出

分割的整数序列,各整数之间用空格格开。

注意,最后一个数字后面没有空格!

样例输入

654321

样例输出

6 5 4 3 2 1

(16)C语言实验题——删除指定字符

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 163 测试通过: 76

描述

从键盘输入一个字符串给str和一个字符给c,删除str中的所有字符c并输出删除后的字符串str。

输入

第一行是一个字符串;

第二行是一个字符。

输出

删除指定字符后的字符串。

样例输入

sdf$$$sdf$$

$

样例输出

sdfsdf

(17)C语言实验题——单词统计

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 169 测试通过: 85

描述

从键盘输入一行字符,统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。

输入

输入只有一行句子。仅有空格和英文字母构成。

输出

单词的个数。

样例输入

stable marriage problem Consists of Matching members

样例输出

7

(18)C语言实验题——打印菱形

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte 总提交: 2093 测试通过: 1056

描述

从键盘输入一个整数n(1≤n≤9),打印出指定的菱形。

输入

正整数n(1≤n≤9)。

输出

指定的菱形。

第一行前面有n-1个空格,第二行有n-2个空格,以此类推。

样例输入

5

样例输出

*

***

*****

*******

*********

*******

*****

***

*

(19)C语言实验题——字符逆序

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 1560 测试通过: 898

描述

将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。

输入

输入包括一行。

第一行输入的字符串。

输出

输出转换好的逆序字符串。

样例输入

I am a student

样例输出

tneduts a ma I

(20)C语言实验题——矩阵下三角元素之和

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 110 测试通过: 74

描述

输入一个正整数n(1 < =n <= 10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。

输入

输入包括n+1行

第一行为整数:n

接下来的n行为矩阵数据

输出

矩阵的下三角元素之和

样例输入

5

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

5 6 7 8 9

样例输出

75

(21)To and Fro

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 127 测试通过: 99

描述

Mo and Larry have devised a way of encrypting messages. They first decide secretly on the number of columns and write the message (letters only) down the columns, padding with extra random letters so as to make a rectangular array of letters. For exampl e, if the message is “There?s no place like home on a snowy night” and there are five columns, Mo would write down

t o i o y

h p k n n

e l e a i

r a h s g

e c o n h

s e m o t

n l e w x

Note that Mo includes only letters and writes them all in lower case. In this example, Mo used the character …x? to pad the message out to make a rectangle, although he could have used any letter.

Mo then sends the message to Larry by writing the letters in each row, alternating left-to-right and right-to-left. So, the above would be encrypted as

toioynnkpheleaigshareconhtomesnlewx

Your job is to recover for Larry the original message (along with any extra padding letters) from the encrypted one.

输入

There will be multiple input sets. Input for each set will consist of two lines. The first line will contain an integer in the range 2. . . 20 indicating the number of columns used. The next line is a string of up to 400 lower case letters. The last input set is followed by a line containing a single 0, indicating end of input.

输出

Each input set should generate one line of output, giving the original plaintext message, with no spaces.

样例输入

5

toioynnkpheleaigshareconhtomesnlewx

3

ttyohhieneesiaabss

样例输出

theresnoplacelikehomeonasnowynightx

thisistheeasyoneab

(22)最大连续子序列

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 401 测试通过: 123

描述

给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni,

Ni+1, ...,

Nj },其中1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个,

例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20。

在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还

需要输出该

子序列的第一个和最后一个元素。

输入

测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。

输出

对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。

样例输入

6

-2 11 -4 13 -5 -2

10

-10 1 2 3 4 -5 -23 3 7 -21

6

5 -8 3 2 5 0

1

10

3

-1 -5 -2

3

-1 0 -2

样例输出

20 11 13

10 1 4

10 3 5

10 10 10

0 -1 -2

0 0 0

(23)开门人和关门人

总提交: 166 测试通过: 79

描述

每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签到、签离记录,请根据记录找出当天开门和关门的人。

输入

测试输入的第一行给出记录的总天数N ( > 0 )。下面列出了N天的记录。每天的记录在第一行给出记录的条目数M ( 0

证件号码签到时间签离时间

其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。

输出

对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,且没有多人同时签到或者签离的情况

样例输入

3

1

ME3021112225321 00:00:00 23:59:59

2

EE301218 08:05:35 20:56:35

MA301134 12:35:45 21:40:42

3

CS301111 15:30:28 17:00:10

SC3021234 08:00:00 11:25:25

CS301133 21:45:00 21:58:40

样例输出

ME3021112225321 ME3021112225321

EE301218 MA301134

SC3021234 CS301133

(24)回文数猜想

总提交: 9 测试通过: 7

描述

一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。

输入

每行一个正整数。

特别说明:输入的数据保证中间结果小于2^31。

输出

对应每个输入,输出两行,一行是变换的次数,一行是变换的过程。

样例输入

27228

37649

样例输出

3

27228--->109500--->115401--->219912

2

37649--->132322--->355553

(25)三角形

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 283 测试通过: 189

描述

用N个三角形最多可以把平面分成几个区域?

输入

输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T 组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).

输出

对于每组测试数据,请输出题目中要求的结果.

样例输入

2

1

2

样例输出

2

8

(26)三角形面积

时间限制(普通/Java):1000MS/10000MS 运行内存限制:65536KByte

总提交: 796 测试通过: 545

描述

给出三角形的三边的边长,求三角形的面积。

输入

输入数据分多组,每组占一行,每行输入三边边长,以空格隔开。输入以EOF 结束。

输出

每行输出三角形的面积。精确到三位小数。

样例输入

1 2 2.5

3 4 4.5

5 6 6.5

样例输出

0.950

ACM题

求体积 #include #include #define PI 3.1415927 int main() { double x; while(scanf("%lf",&x)!=EOF) { printf("%.3lf\n",(4.0*PI*x*x*x)/3.0); } return 0; } 求a+b II. #include #include #define N 1005 char A[N],B[N],sum[N]; int main() { int T,i,j,k,x,sign; while(scanf("%d",&T)!=EOF) { for(i=0;i

{ sum[x]=(A[j]-'0')+(B[k]-'0')+sign-10; sign=1; } } #include using namespace std; int main() { int a, b; while(cin >> a >> b) cout << a + b << endl; return 0; 求a+b #include using namespace std; int main() { int a,b,s; while(cin>>a>>b) { s=a+b; cout< #include int main() { char s[3],a,b,c,temp; while(scanf("%s",s)!=EOF) { a=s[0];b=s[1];c=s[2]; if(a>b) { temp=a; a=b;

ACM竞赛试题集锦

取石子游戏 Time Limit:1S Memory Limit:1000K Total Submit:505 Accepted:90 Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。 Output 输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。 Sample Input

2 1 8 4 4 7 Sample Output 1 跳蚤 Time Limit:1S Memory Limit:1000K Total Submit:198 Accepted:44 Description Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许

有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳10个单位长度,然后再连向左跳3次,每次15个单位长度,最后再向右连跳3次,每次18个单位长度。而持有卡片(12, 15, 18)的跳蚤,则怎么也不可能跳到距他左边一个单位长度的地方。 当确定N和M后,显然一共有M^N张不同的卡片。现在的问题是,在这所有的卡片中,有多少张可以完成任务。 Input 两个整数N和M(N <= 15 , M <= 100000000)。 Output 可以完成任务的卡片数。 Sample Input

安徽ACM省赛试题

2018年安徽省机器人大赛程序设计竞赛

目录A.数7 B.编译错误 C.做操的时候要排好队D.判重 E.最长上升字串 F.雄伟的城堡 G.然后打5 H.运货卡车 I.最大矩形框 J.数列分段 K.数数字

A.数7 时间限制: 3s 描述 求整数序列中位置L到位置R中一共有多少个7。对于每个数7的个数的定义为,十进制各个位置上一共有多少个7,以及能够被7整除的次数。 输入 第一行是一个整数T,代表测试数据的组数。每组数据中两个整数L,R。其中T≤50,L

B.编译错误 时间限制: 3s 描述 在程序员编写程序的时候,通常会引用其他文件,而引用的文件也会引用其它的头文件。但是出现循环引用的现象编译时便会报错。例如A引用了B,B引用了C,C引用了A,那么就产生了循环引用(Circular reference)。考虑另外一个情况,A引用了B和C,B引用D,C引用D,虽然D被引用了两次,但是没有出现循环引用。 输入 第一行是一个整数T,代表测试数据的组数。每组数据中第一行是一个整数n,代表有多少个引用关系。接下来n行每行有2个字符串a,b,用空格分隔,代表a引用了b。其中T≤50, n≤105,每个字符串长度不超过100。 输出 共T行。若不会产生编译错误则输出Passed,否则输出Failed。 样例输入 样例输出

C.做操的时候要排好队 时间限制: 3s 描述 同学们在做早操时,应该按照身高从低到高排好队。但是总是有人不好好排队,老师在审查时会对没有排好的队伍扣除一定的分数。扣的分数被定义为,找到三个人Ai,Aj,Ak,其中i

Acm试题及答案

Acm试题及答案 1001 Sum Problem ............................................. 错误!未定义书签。1089 A+B for Input-Output Practice (I) ...................... 错误!未定义书签。1090 A+B for Input-Output Practice (II) ..................... 错误!未定义书签。1091 A+B for Input-Output Practice (III) .................... 错误!未定义书签。1092 A+B for Input-Output Practice (IV) ...................... 错误!未定义书签。1093 A+B for Input-Output Practice (V) ...................... 错误!未定义书签。1094 A+B for Input-Output Practice (VI) ..................... 错误!未定义书签。1095 A+B for Input-Output Practice (VII) ..................... 错误!未定义书签。1096 A+B for Input-Output Practice (VIII) ................... 错误!未定义书签。2000 ASCII码排序............................................ 错误!未定义书签。2001计算两点间的距离........................................ 错误!未定义书签。2002计算球体积.............................................. 错误!未定义书签。2003求绝对值................................................ 错误!未定义书签。2004成绩转换................................................ 错误!未定义书签。2005第几天.................................................. 错误!未定义书签。2006求奇数的乘积............................................ 错误!未定义书签。2007平方和与立方和.......................................... 错误!未定义书签。2008数值统计................................................ 错误!未定义书签。2009求数列的和.............................................. 错误!未定义书签。2010水仙花数................................................ 错误!未定义书签。2011多项式求和.............................................. 错误!未定义书签。2012素数判定................................................ 错误!未定义书签。2014青年歌手大奖赛_评委会打分............................... 错误!未定义书签。

整理出ACM所有题目及答案

1111111杭电: 1000 A + B Problem (4) 1001 Sum Problem (5) 1002 A + B Problem II (6) 1005 Number Sequence (8) 1008 Elevator (9) 1009 FatMouse' Trade (11) 1021 Fibonacci Again (13) 1089 A+B for Input-Output Practice (I) (14) 1090 A+B for Input-Output Practice (II) (15) 1091 A+B for Input-Output Practice (III) (16) 1092 A+B for Input-Output Practice (IV) (17) 1093 A+B for Input-Output Practice (V) (18) 1094 A+B for Input-Output Practice (VI) (20) 1095 A+B for Input-Output Practice (VII) (21) 1096 A+B for Input-Output Practice (VIII) (22) 1176 免费馅饼 (23) 1204 糖果大战 (25) 1213 How Many Tables (26) 2000 ASCII码排序 (32) 2001 计算两点间的距离 (34) 2002 计算球体积 (35) 2003 求绝对值 (36) 2004 成绩转换 (37) 2005 第几天? (38) 2006 求奇数的乘积 (40) 2007 平方和与立方和 (41) 2008 数值统计 (42) 2009 求数列的和 (43) 2010 水仙花数 (44) 2011 多项式求和 (46) 2012 素数判定 (47) 2014 青年歌手大奖赛_评委会打分 (49) 2015 偶数求和 (50) 2016 数据的交换输出 (52) 2017 字符串统计 (54) 2019 数列有序! (55) 2020 绝对值排序 (56) 2021 发工资咯:) (58) 2033 人见人爱A+B (59) 2037 今年暑假不AC (61) 2039 三角形 (63) 2040 亲和数 (64)

2017ACM比赛试题

2017年计算机ACM编程竞赛 主办:计算机科学与技术学院 时间:2017-11-22 18:00---20:00 地点:计算机学院奋进楼4楼5机房

竞赛规则 1、比赛时间为120分钟,从18:00开始,20:00结束。 2、比赛形式为上机编程,每个小组使用三台电脑,可任选语言,同一小组不同题目可使用不同语言; 3、比赛期间可以使用自己电脑,不可查阅书籍、但禁止查阅个人U盘,禁止使用手机、电脑进行上网查询,禁止使用现有代码,违者取消比赛资格;(正式ACM中是可以携带纸质材料的,但由于本次比赛,有大量题目参考书上例题,所以就不让携带了) 4、比赛期间,如遇到设备问题,可举手示意工作人员; 5、由于机房电脑系统有重启还原功能,比赛期间请勿轻易重启电脑; 6、【重要】比赛结束后,请确认将所要提交文件拷至工作人员U盘,否则成绩无效概不负责。 提交方式 1、创建文件夹,文件夹命名格式为小组号-小组队长-组员1-组员2 2、将每一题的源程序文件夹以题目编号命名,拷贝至上述创建的文件夹中 3、在本文档中每题相应位置附上源码及截图(windows截图键:Alt+Prt sc sysrq),拷贝至上述创建的文件夹中 4、比赛结束后将上述文件夹拷贝至工作人员U盘中,提交方算完成,提交 完成前请勿重启电脑。 注:本次比赛共14题,满分120分。没有完成题目,但有部分解题步骤者按完成度给分。每道题要有注释。

竞赛题目 1. 青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。输入数据有多组,每组占一行,每行的第一个数是n(2

历届程序设计acm试题

搜集的南开大学的ACM试题与你共享 [A]南开大学Onlinejudge 在线判题系统https://www.doczj.com/doc/d46149456.html, A.Lucy的新难题 时间限制:2秒内存限制:32000KB 不知不觉,南开大学第三届“我为程序狂”又要拉开帷幕了。这天,Lucy也来到南开大学ACM协会,与大家共同欢庆NKPC的三周岁的日子。 谈笑间,ACM协会的主席拿了圆形的生日蛋糕。大伙开心地唱完了生日歌,一起吹灭了蜡烛。 要分蛋糕了,大家都很兴奋。本着公平的原则,每位到场的人员都要在蛋糕上切一刀。ACM协会的主席事先知道有n位朋友会参与这个欢庆宴会。为了方便大家切蛋糕,主席在订蛋糕的时候就嘱咐在蛋糕的边缘布置上2n朵小花。 每个人切蛋糕都会从蛋糕的边缘的一朵小花笔直地切到蛋糕的另一端的小花,来表达自己对NKPC的祝福。为了尊重其他同学,每个人在切蛋糕一定不会和蛋糕上已有的切痕相交,也不会从别人已切过的小花作为切蛋糕的起点或终点。同时,每位同学在切蛋糕的时候,都要保证后面所有的同学都能够按照上述的规则切蛋糕。这样,蛋糕上就留下n条切痕。 Lucy眨巴眨巴眼睛,问,要是不考虑切蛋糕的先后顺序和谁切的哪一刀,这蛋糕切完了共有多少种切法呢? 大家听了呵呵一笑,说,那就把这个问题留给NKPC3,作为《Lucy的新难题》吧。 相信聪明的你,一定能够帮Lucy解答她的难题的,对吗? 输入包括多组测试数据,你应当处理到输入结束为止。 每组输入数据中,都只有一行,仅包含一个正整数n,且0

四川理工学院2012年ACM程序设计赛试题

2012年四川理工学院“达内杯”大学生程序设计竞赛试题 Problem 1:Sorting There are 16 random sorting numbers from 0 to 15, and they could be converted to different binary numbers, which have 4 digits. Please code algorithm to sort them by the order that the first there digits of the former number is same to the last there digits of the following. The first number of the sorted is always the first given number. Sample Input: 1 3 5 7 9 11 13 15 0 2 4 6 8 10 12 14 Sample Output: 1 2 4 9 3 7 15 14 13 10 5 11 6 12 8 0 Problem 2:Solution of Equation In the interval [0,1], please programming to give the real root, of which error is less than 10-3, of equation ax3+bx2+cx+d=0, where a, b ,c and d are real number. And print the real root or the character “no solution”. Sample Input: 1:a =1 b =-1 c =-2 d =1 2:a =1 b =1 c =1 d =1 Sample Output: 1:x =0.444335937 2:no solution

acm编程比赛题

比赛试题 主办方:迅翔计算机协会

【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K 个互不相同的钱币面值Ki(1 <= Ki <= 1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

【问题描述】 Felicia 的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100 *_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli 听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20 时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

ACM试题

1.开灯问题 有n盏灯,编号为1-n。第1个人把所有的灯打开,第二个人按下所有编号为2的倍数的开关(这些灯被关掉),第3个人按下所有边后卫3的倍数的开关(其中关掉的灯将被打开,打开的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯的编号。K≤n≤1000. 样例输入:7 3 样例输出:1 5 6 7 测试数据 样例输入:10 4 样例输出:1 4 5 6 7 8 样例输入:10 5 样例输出:1 4 6 7 8 10 样例输入:15 6 样例输出:1 4 7 8 10 11 12 13 15 源码: #include"stdio.h"

#include"string.h" #define MAXN 1000+10 int a[MAXN]; int main() { int i,j,n,k,first=1; memset(a,0,sizeof(a)); scanf("%d%d",&n,&k); for(i=1;i<=k;i++) for(j=1;j<=n;j++) if(j%i==0) a[j]=!a[j]; for(i=1;i<=n;i++) if(a[i]) { if(first) first = 0; else printf(" "); printf("%d",i); } printf("\n"); return 0;

} 2.蛇形填数 在n*n方阵里填入1,2,3…..n*n,要求填成蛇形。例如n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n≤8. 样例输入: 4 样例输出: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 测试数据 样例输入: 3 样例输出:

ACM几道练习题及其答案

…………………………………………………………………………………………………….. 标题:HDU- 1001-Sum Problem 代码:#include #include #include #include using namespace std; int main() { //freopen("text.txt","r",stdin); int sum,i; while(scanf("%d",&i)!=EOF) { if((i+1)%2==0) sum=(i+1)/2*i; else sum=i/2*(i+1); printf("%d\n\n",sum); } //fclose(stdin); return 0; } …………………………………………………………………………………………………….. …………………………………………………………………………………………………….. 标题:HDU-2027- 代码:#include #include #include #include using namespace std;

int main() { //freopen("text.txt","r",stdin); char c[101]; int n,j,k,a,e,i,o,u; scanf("%d\n",&n);//注意这里 for(j=1;j<=n;j++) { a=e=i=o=u=0; gets(c); for(k=0;c[k]!='\0';k++) { if(c[k]=='a')a++; if(c[k]=='e')e++; if(c[k]=='i')i++; if(c[k]=='o')o++; if(c[k]=='u')u++; } printf("a:%d\ne:%d\ni:%d\no:%d\nu:%d\n",a,e,i,o,u); if(j #include #include #include using namespace std; int main() {

部分ACM题目及答案

1001 Sum Problem (2) 1089 A+B for Input-Output Practice (I) (2) 1090A+B for Input-Output Practice (II) (2) 1091A+B for Input-Output Practice (III) (2) 1092A+B for Input-Output Practice (IV) (2) 1093A+B for Input-Output Practice (V) (2) 1094 A+B for Input-Output Practice (VI) (2) 1095A+B for Input-Output Practice (VII) (2) 1096 A+B for Input-Output Practice (VIII) (2) 2000 ASCII码排序 (2) 2001计算两点间的距离 (2) 2002计算球体积 (2) 2003求绝对值 (2) 2004成绩转换 (2) 2005第几天? (2) 2006求奇数的乘积 (2) 2007平方和与立方和 (2) 2008数值统计 (2) 2009求数列的和 (2) 2010水仙花数 (2) 2011多项式求和 (2) 2012素数判定 (2) 2014青年歌手大奖赛_评委会打分 (2) 2015偶数求和 (2) 2016数据的交换输出 (2) 2017字符串统计 (2) 2019数列有序! (2) 2020绝对值排序 (2) 2021发工资咯:) (2) 2033人见人爱A+B (2) 2039三角形 (2) 2040亲和数 (2)

ACM试题

91000: 整数a+b Time Limit: 1 Sec Memory Limit: 30 MB Submit: 24043 Solved: 11168 SubmitStatusWeb Board Description 计算两个整数的和。 Input 输入两个整数,两个整数用空格隔开。 Output 输出为两个整数的和,单独占一行 Sample Input 1 1 Sample Output 2 HINT Source 1004: 三位数的数位分离 Time Limit: 1 Sec Memory Limit: 30 MB Submit: 12806 Solved: 8289 SubmitStatusWeb Board

Description 从键盘输入一个任意的三位正整数,分别求出其个位、十位和百位上的数字。 Input 输入任意的一个三位正整数。 Output 依次输出个位、十位、百位上的数字。以空格间隔,但最后一个数据的后面没有空格,直接换行。 Sample Input 367 Sample Output 7 6 3 HINT Source 1005: 整数幂 Time Limit: 1 Sec Memory Limit: 30 MB Submit: 18292 Solved: 7703 SubmitStatusWeb Board Description 输入3个整数,输出它们的1次幂、2次幂和3次幂。

Input 输入3整数,用空格隔开 Output 输出3行,每行3个整数,分别是它们的1次幂、2次幂和3次幂,每个整数占9列,不足9列左对齐 Sample Input 1 5 100 Sample Output 1 1 1 5 25 125 100 10000 1000000 HINT Source 1006: 求等差数列的和 Time Limit: 1 Sec Memory Limit: 30 MB Submit: 11569 Solved: 7491 SubmitStatusWeb Board Description 给出三个整数,分别表示等差数列的第一项、最后一项和公差,求该数列的和。 Input

杭电ACM试题答案

【杭电ACM1000】 A + B Problem Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to end of file. Output For each case, output A + B in one line. Sample Input 1 1 Sample Output 2 # include int main() { int a, b; while(scanf("%d%d", &a, &b)!=EOF) printf("%d\n", a+b); return 0; } 【杭电ACM1001】 Sum Problem Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n. Input The input will consist of a series of integers n, one integer per line.

Output For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer. Sample Input 1 100 Sample Output 1 5050 # include int main() { int n, i, sum = 0; while(scanf("%d", &n)!=EOF) { for(i=1; i<=n; ++i) sum = sum + i; printf("%d\n\n", sum); sum = 0; } return 0; } 【杭电ACM1002】 A + B Problem II Problem Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. Input The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000. Output

acm编程比赛入门题目集

最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M(1 <= M <= 2000,整数),接着的一行中,第一个整数K(1 <= K <= 10)表示币种个数,随后是K 个互不相同的钱币面值Ki(1 <= Ki <= 1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

Feli 的生日礼物 【问题描述】 Felicia 的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100 *_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli 听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20 时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

整理出ACM所有题目及答案

1000 A + B Problem Problem Description Calculate A + B. Input Each line will contain two integers A and B. Process to end of file. Output For each case, output A + B in one line. Sample Input 1 1 Sample Output 2 Author HDOJ 代码: #include int main() { int a,b; while(scanf("%d %d",&a,&b)!=EOF) printf("%d\n",a+b); } 1001 Sum Problem Problem Description Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.

Input The input will consist of a series of integers n, one integer per line. Output For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer. Sample Input 1 100 Sample Output 1 5050 Author DOOM III 解答: #include main() { int n,i,sum; sum=0; while((scanf("%d",&n)!=-1)) { sum=0; for(i=0;i<=n;i++) sum+=i; printf("%d\n\n",sum); } }

ACM题目与答案—A

目录 水果沙拉 (1) 拆铁路 (4) 神奇宝贝 (8) 生日party (11) 屠龙宝镜 (14) 水果沙拉 #include #include const int MAX_N = 100; const int MAX_A = 100; const int MAX_B = 100;

const int MAX_V = 2 * MAX_N * MAX_A; int max(int a, int b) { return a > b ? a : b; } int main() { int dp[MAX_V]; int a[MAX_N]; int b[MAX_N]; int i,j, n, k; scanf("%d %d", &n, &k); int offset = n * MAX_A; int v = 2 * offset; for (i = 0; i < n; ++i) { scanf("%d", &a[i]); } for (i = 0; i < n; ++i) { scanf("%d", &b[i]); b[i] = a[i] - k*b[i]; } memset(dp, -1, sizeof(dp)); dp[offset] = 0; for (i = 0; i < n; ++i) { bool isMinus = b[i] < 0; if (isMinus) { for (j = 0; j < v + b[i]; ++j) { if (dp[j - b[i]] != -1) { dp[j] = max(dp[j], dp[j - b[i]] + a[i]); } } } else { for (j = v - 1; j >= b[i]; --j) { if (dp[j - b[i]] != -1) {

杭州电子科技大学acm习题集锦

目录 1、数塔问题 (2) 2、并查集类问题 (4) 3、递推类问题 (9) 4、动态规划系列 (10) 5、概率类题型 (13) 6、组合数学类题型 (15) 7、贪心策略 (16) 8、几何问题 (19)

数塔类问题 数塔 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。Output 对于每个测试实例,输出可能得到的最大和,每个实例的输出占一行。 Sample Input 1 5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 Sample Output 30 #include #include #define MAX 101 int arr[MAX][MAX][2]; void res() { int n; int i,j; memset(arr,0,MAX*MAX*sizeof(int)); scanf("%d",&n); for(i=0;i=0;i--) { for(j=0;j<=i;j++) { if(arr[i+1][j][1]>arr[i+1][j+1][1]) arr[i][j][1]+=arr[i+1][j][1]; else arr[i][j][1]+=arr[i+1][j+1][1]; } } printf("%d\n",arr[0][0][1]); } int main() { int num; scanf("%d",&num);

相关主题
文本预览
相关文档 最新文档