C语言程序设计实践——综合篇
xmzyt1996
这个作者很懒,什么都没留下…
展开
-
解开密码
实验任务 小菇凉和小光头继续向前走来到了一扇青铜门前被挡住了。青铜门上有一些奇怪的数 字。小光头想起剑姬老师上课的时候说过,这些数字叫“Smith Numbers”。这些数字的各 位数字之和和它本身被质因数分解后各位数字之和相同。如: 4937775= 3*5*5*65837 4+9+3+7+7+7+5= 42 3+5+5+6+5+8+3+7=42 所以493原创 2015-03-15 15:51:37 · 1397 阅读 · 0 评论 -
程序猿
实验任务 高中毕业的右京没考上大学,又没找到工作,于是想自学 C 成为传说中的程序猿。这天,他遇到了一个问题,要使用指针将一个一维数组中最小的数与第一个数交换,并将第二小的数与第二个数交换。他对指针的使用不太熟练,所以向学了一学期 C 的朋友求助!数据输入 输入一个整数 n (n < 100 ) 表示数组的大小,接下来输入 n 个整数数据输出 将得到的数组中最小的数与第一个数交换,第原创 2015-04-12 23:30:11 · 281 阅读 · 0 评论 -
插队
实验任务 春节到了,大家急着排队买车票,但是有些人却喜欢插队。数据输入 第一行 N,代表有 N 个操作。(N <= 1000) 接下来 N 行,每行一个操作。 第 i 行的操作有两种格式。(i 的值从一开始) 0 表示编号为 i 的人插入到排队队列的末尾。 1 x 表示编号为 i 的人插队到编号为 x 的人的前面。数据输出 输出只有一行,按顺序输出队列中的人的原创 2015-04-12 23:34:23 · 568 阅读 · 0 评论 -
插队 2
实验任务 春节到了,大家急着排队买车票,但是有些人却喜欢插队,如果有人插队,排在其后面的人就会愤怒而获得一个愤怒值,当队列中所有人的愤怒值之和超过一定的限值,队列中的人就会将所有插队的人踢出队列,之和所有人的愤怒值清0。每个人的初始愤怒值为 0,插队的人被插队后也会增加愤怒值。数据输入 第一行有两个整数 N 和 M,代表有 N 个操作和队列的愤怒限值。(1<=N <= 1000,0<原创 2015-04-12 23:37:36 · 684 阅读 · 0 评论 -
余数排序
实验任务 给出 n 个数,按照每个数模 m 的余数进行排序,如果余数相同,保持原有数的相对顺序。数据输入 输入有两行。 第一行有两个数 n 和 m,意义如上文所说。(1<=n<=100000,1<=m<=100000) 第二行给出 n 个数。数据输出 输出 n 行,为排好序的 n 个数。输入示例 5 3 1 2 3 4 5输出示例 3 1 4原创 2015-04-12 23:42:28 · 697 阅读 · 0 评论 -
火车进站
实验任务 这是一个普通的火车站,有一个供列车车厢调转位置的栈型铁轨: 进站的列车编号为 1 2 3 …n,栈型铁轨可容纳 m 台车厢。 车站管理员喜欢是个糊涂虫,经常把列车运行记录弄错。这是十分严重的问题。 现在,给出车站管理员记录的列车车厢的出站编号顺序,你能判断出他是否有记错吗?数据输入 输入第一行为两个整数 n m(0数据输出 若车站管理员记录出错,请输原创 2015-04-15 19:06:32 · 825 阅读 · 0 评论 -
有序链表的合并
实验任务 有两个实数链表,其中的节点已按递增顺序排好。可是由于小明不小心把酱油洒在了硬盘上,导致有些节点的具体值丢失了,链表变成了类似这种样子: 1->x1->3(头尾节点没遭到破坏,但中间节点的值变成了未知数) 现在小明要把两个链表合并成一个,并且仍然保持递增顺序。他想知道,最终的结果是 不是唯一的? (例如,如果两个链表分别是 x1->3 和 4->x2,那么合原创 2015-04-12 23:58:43 · 374 阅读 · 0 评论 -
简单的循环链表
实验任务 初始的循环链表中有 n 个元素,编号为 1~n,m 次操作,每次操作删除一个数。m 次操作后,按顺序输出在链表中的元素编号。数据输入 第一行有两个整数 n 和 m,代表 n 个元素和 m 次操作(1<=n<=1000,1<=m数据输出 输出一行,按顺序输出在链表中的元素编号。输入示例 5 3 1 2 3输出示例 3 4解题思路用STL中的que原创 2015-04-12 23:54:44 · 436 阅读 · 0 评论 -
军训
实验任务 小 M 在大一军训时,遇到了一个奇怪的教官。这个教官提出了一个奇怪的要求。他让小M 班的同学们排成一队,然后他开始喊左边第 X 个或者右边第 X 个同学出列,按出列顺序排成新的一队。请根据原来的编号输出新的序列。数据输入 输入第一行包括一个正整数 N(N<=10000),表示队伍人数。接下来 N 行,每行包括一个字母和一个 int 型整数 ai,字母 L 表示左边数起,字母 R原创 2015-04-15 18:59:30 · 352 阅读 · 0 评论 -
右边的人
实验任务 小 M 在放学路上看到一群 DM 排成一行在跳广场舞。他注意到 DM 们并没有按照身高的高矮来排队,这样就造成了部分 DM 有可能看不见右边的所有 DM。(我们约定每个 DM 最远只能看到右边第一个不比自己矮的 DM = = !) 他想知道,每个 DM 能看到几个右边的 DM。数据输入 输入第一行包括一个正整数 N(0 < N <= 10000 ),表示 DM 人数。接下来 N原创 2015-04-15 19:10:33 · 369 阅读 · 0 评论 -
boring
实验任务 tony 来到了 boring 星球,他发现这里的外星人都很单纯。比如他们排队的时候,只有两种想法,排在队首或者队尾。每个外星人都有一个 VIP 值。要排在队首的条件就是自己的 VIP 值比队首的 VIP 值高。数据输入 输入一个 n(n<=10000)表示外星人的数量。接下来一行有 n 个数字,表示第 i 个外星人的 VIP 值。(vip 值为非负整数)数据输出 输原创 2015-04-15 18:14:51 · 229 阅读 · 0 评论 -
repair
实验任务 Fresh 住在一个美丽的小村庄。那里空气清新风景优美。唯一的不足就是台风多发。一天,台风来了,fresh 住的房子遭到毁坏,有个 1*L 的洞。然后 fresh 请 vegetable 来修理房子。已知 vegetable 带来 n 块 1*li 的木板和一把锯子。请问 vegetable 如何修理才能使所需的木板数目最少。数据输入 第一行输入两个整数 L(0数据输出 输出原创 2015-04-24 16:54:41 · 349 阅读 · 0 评论 -
匹配
实验任务 小光头解开了老鼠的难题,老鼠很高兴,告诉他们,他们需要打败控制这个森林的大魔王才能走出这片森林。如果小光头能再帮他解开一个难题,他就告诉小光头去哪里找这个大魔王。 问题是这样的,老鼠给了一串由由(,),[,],{,},<,>构成的一个括号字符串,找到它的一个最长子串,该子串有正确的括号配对。数据输入 输入包括多组数据,每组数据只有一行括号字符串,其长度不大于 10000。原创 2015-04-15 18:53:11 · 383 阅读 · 0 评论 -
队列
实验任务 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。原创 2015-04-15 18:11:37 · 305 阅读 · 0 评论 -
分石头
实验任务 有一堆石头,共有 m 个,现在要你把他们分成小于等于 n 堆,一共有多少种不同的分法。数据输入 输入第一行包括一个正整数 T(T<=10),接下来共有 T 组数据,每组数据只有一行,每行有两个正整数,m 和 n(m,n<=20)。数据输出 每组数据输出一个数 sum,表示 sum 种不同的分法。输入示例 1 7 3输出示例 8解题思路只有1堆或没有石头,原创 2015-04-24 18:04:10 · 849 阅读 · 0 评论 -
prime
实验任务 输入一个数,它是由三个 1000 以内的质数相乘而得,要求从小到大输出这三个素数。数据输入 输入 n数据输出 输出三个质数。输入示例 30输出示例 2 3 5解题思路其实。。就是分解质因数嘛(:з」∠)参考代码#include <stdio.h> int main() { __int64 n; while (~scanf("%I64d"原创 2015-04-24 16:48:02 · 314 阅读 · 0 评论 -
Restore
实验任务 有奇数个人围成一个圈,每个人只知道自己前前处的人。有些人会问你他的 前面是谁。(人的编号从 1 起)数据输入 第一行 N,代表有几个人。(N <= 30000) 接下来 N 行,每行为 a,b,表示 a 的前前方的人为。 接下来一行为 M,表示 M 次询问。(M <= 30000) 接下来 M 行,每行为 a,表示询问 a 的前方的人。数据输出 每次原创 2015-03-28 22:40:20 · 351 阅读 · 0 评论 -
Students
实验任务 一份杂乱无序的学生名单,请你按照班级和序号升序排列。数据输入 第一行 N,代表有几位学生。(N <= 10000) 接下来 N 行,每行为 class_number, number, name,表示学生的班级,序号,姓名。(没有两人班级和序号均相同) (班级和序号为 1,2,3,4..,学生姓名长度不超过 10)数据输出 输出有序的名单,每行一条学生的信息。输原创 2015-03-28 22:11:52 · 233 阅读 · 0 评论 -
函数 w
实验任务 Ytaaa定义了函数 w 用于未知的用途。 if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) =1 if a > 20 or b > 20 or c > 20, then w(a, b, c) =w(20, 20, 20) if a < b and b < c, then w(a, b, c) =w(a, b, c-1)原创 2015-03-15 15:59:04 · 381 阅读 · 0 评论 -
买房子
实验任务 Ytaaa最近刚买了一栋房子,欣喜之余,细心的 ytaaa 想要知道房子的占地面积。Ytaaa 的房子是一个位于矩形之内的不规则图形,现有一份 6X9 的地图: @代表目前 ytaaa 的位置,.代表可以通过的地方,#代表围墙,ytaaa 可以走到的地方 均属于 ytaaa,现在请你帮忙统计,ytaaa 的房子到底有多大。数据输入 输入第一行包括两个正整原创 2015-03-15 16:08:49 · 507 阅读 · 0 评论 -
匹配
实验任务 小光头解开了老鼠的难题,老鼠很高兴,告诉他们,他们需要打败控制这个森林的大魔王才能走出这片森林。如果小光头能再帮他解开一个难题,他就告诉小光头去哪里找这个大魔王。 问题是这样的,老鼠给了一串由由(,),[,],{,},<,>构成的一个括号字符串,判断这个字符串左右括号是否匹配。数据输入 输入包括多组数据,每组数据只有一行括号字符串,其长度不大于 10000。数据输出原创 2015-03-15 15:23:40 · 320 阅读 · 0 评论 -
排序
实验任务 小菇凉和小光头在森林里找了许久都没有看到出路。小菇凉生气了,叫出了小熊提伯斯烧光了附近的树木。一只老鼠跳了出来!指责他们烧到了自己,打扰了自己计算很腻害的东西。小光头连忙道歉,可是老鼠还是很生气,要求他们帮它解决他在计算的那个难题才肯放他们过去。小光头只好帮忙解决老鼠的问题。 老鼠在解决的问题是这样的,有一串数字序列,老鼠想知道需要多少次相邻对换才能把这串数字序列变成递增上升原创 2015-03-15 15:27:35 · 291 阅读 · 0 评论 -
回文串
实验任务 回文串指按字母从左到右和从右到左读一致的字符串,现在 ytaaa 需要一个程序来判断一个字符串是否是回文串。 总共有两个操作。 1. 添加一个字符串。例如 add s。每个句子长度小于 100 2. 判断第 k(从 1 开始)个字符串是否是回文串。例如 judge k。数据输入 输入第一行包括一个正整数 N(N<=1000),表示操作总数。接下来 n 行,每行为原创 2015-03-15 16:19:35 · 522 阅读 · 0 评论 -
N!(高精度计算)
实验任务 给出一个数 N,请你计算 N!的值。数据输入 每个例子第一行只有一个数 N(1<=N<=1000)。数据输出 对于每个 N,在一行里输出 N!的值。输入示例 1 2 3输出示例 1 2 6解题思路高精度问题:大整数乘法的应用 其核心思想就是把计算结果每一位上的数字保存到一个数组成员中,例如: 把124保存至数组中,保存结果应该是re原创 2015-03-15 15:17:43 · 624 阅读 · 0 评论 -
图书馆
实验任务 为了击败邪恶的组织—–图书馆破坏者,ytaaa 作为间谍加入这个组织。但是这并不是人人都可以加入的,作为考验,组织分配了一个任务作为考核,那就是,把图书馆内书的顺序打乱,而且必须是没有一本书在其原本的位置。现在 ytaaa 很好奇一共有多少种方式将所有书放错。数据输入 输入一行包括一个正整数 N(N<=20),表示书本数量。数据输出 输出仅有一个数,将所有书放错的方案数。原创 2015-03-15 16:12:22 · 356 阅读 · 0 评论 -
传说中的 X
实验任务 小菇凉和小光头从老鼠那儿离开后接着往前走,在森林的角落石壁上发现了一个奇怪的“X”标记。在标记的边上有这么一段话:传说中的 X 蕴含古老的力量,真正了解“X”意义的人才能得到这种力量,而了解“X”的方式就是画“X”,不断的画“X”,规则如下: 1: X 2: X X X X X . . . 以此类推(你们一定看懂了!原创 2015-03-15 16:36:17 · 350 阅读 · 0 评论 -
记得存档
实验任务 小光头找到小菇凉后发现他们被困在一个奇怪里结界里找不到原来的路回家去了,于是小光头打算带着小菇凉往森林深处走去寻找一条新的道路。在森林入口,他们发现了一块石壁,上面有一些奇怪的符号,写的是如果解除封印就能存档,即使在森林里遭遇不测也可以重新来过(红豆泥?o_O?!)。 解除封印需要在一串字符串中找出是否包含另一个串的子序列。如果包含则这个封印可以解除,否则则不可以解除。数据原创 2015-03-15 14:55:56 · 433 阅读 · 0 评论 -
记得读档
实验任务 小光头找到小菇凉存档后遇到了意外,需要重新开始。可是读档也需要奇怪的暗号,才能解开之前存档封印重新开始,规则如下: 对一个长度为 n 的字符串 S,首先根据它构造 n 个字符串,其中第 i 个字符串由 S 向左循环移位 i-1次得到(见示例)。然后把这 n 个字符串按照首字符从小到大排序。如果两个字符串的首字符相同,则它们的相对位置不变。接着把排序后的字符串的尾字符依次连成一原创 2015-03-15 15:38:01 · 518 阅读 · 0 评论 -
Circle
实验任务 有一些圆,两个圆可能相交,外离,内含,相切,或者重合。数据输入 第一行 N,代表有几个圆。(N <= 1000) 接下来 N 行,每行为 x,y,r,表示该点的坐标以及圆半径。(-100 <= x,y <= 100) (1 <= r <=100)(均为整数) 接下来一行为 M,表示 M 次询问。(M <= 1000) 接下来 M 行,每行为 a,b,代表分原创 2015-03-28 22:07:38 · 391 阅读 · 0 评论 -
Variance
实验任务 有一份成绩名单,每位学生有三门课程的分数,在正常情况下会按照总分从高到低排名。不过,我们想了解谁在各个课程中更加地稳定。请按照方差从低到高进行排序。若稳定度相同,在名单靠前的学生排前。数据输入 第一行 N,代表有几位学生。(N <= 10000) 接下来 N 行,每行为该同学的姓名和三门成绩分数。(0<=成绩<=100的整数) (学生姓名长度不超过 10)数据输出原创 2015-03-28 22:17:49 · 383 阅读 · 0 评论 -
Out
实验任务 一条队列呈一字型排列,每次会让其中的一个的离开。数据输入 第一行 N,代表有几个人。(N <= 1000)(人的编号为 1,2…N) 接下来 N 行,每行包含一个数字 Name,a,b,表示编号为 a 的人名为 Name, 前方为编号为 b 的人。(若前方无人,b 为 0)(姓名长度不超过 10) 接下来为 M,代表离队 M 次。 接下来 M 行,每行包含原创 2015-03-28 22:25:54 · 272 阅读 · 0 评论 -
W
实验任务 一条队列呈一字型排列,之后将变换为 W 型。队伍面朝 W 的上端。数据输入 第一行 N,代表有几个人。(N <= 30000)(人的编号为 1,2…N) (N = 4k+1(k∈Z+)) 接下来 N 行,第 i 行包含一个数字 x,表示 i 号编号的人前面的人编号为 x。 若前方无人,则为零。数据输出 输出队伍站立为 W 型后每个人前方的人。 若前方原创 2015-03-28 23:13:27 · 286 阅读 · 0 评论 -
插眼
实验任务 小菇凉和小光头来到了一片黑漆漆的水域,他们必须穿过水域拿到大龙 buff 才可能打败大魔王。可是聪明的大魔王在水域上设置了许多的隐形假眼来监视是否有人偷 buff,只有真眼监视才能看到假眼。小光头想了个办法,在岸边设置一些真眼来时时观测假眼的分布,真眼只能设置在岸边(X 轴),且只能监视以真眼为中心半径为 d 的圆形区域的假眼。可是真眼很贵,小菇凉和小光头希望用最少的真眼来检测所有的假原创 2015-03-28 21:01:33 · 391 阅读 · 0 评论 -
方程式的根
实验任务 读数学的小渣最近遇到了个棘手的问题,要求 y=logax+bx+cy = log_{a}x + bx + c (a>1,b>=0)的根。而他现在忙着推理公式,所以要你帮他写个程序来完成这个问题。数据输入 输入第一行包括三个实数 a,b,c。数据输出 输出方程式的根 x(保留 5 位小数)。输入示例 2 2 2输出示例 0.19167解题思路二分法求根。 注意原创 2015-04-24 17:23:49 · 539 阅读 · 0 评论