蓝桥杯2017年真题训练

蓝桥杯2017年真题训练

C组第一期

1.贪吃蛇长度

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

+-------------------------------------------------+
|                                                 |
|    H######                      ####            |
|          #                      #  #            |
|          #                      #  #            |
|          #     ####             #  #            |
|          #     #  #             #  #            |
|          ######@###             #  #            |
|                #       ####     #  #            |
|                #       #  #     #  #            |
|            ####@#######@###     #  #            |
|            #   #       #        #  #            |
| T          #####       #        #  #   ##       |
| #                      #      ###  ### ##       |
| ################       #      #      ####       |
|                #       #      #         #       |
|   ##############       #######@##########       |
|   #                         ###                 |
|   ###########################                   |
+-------------------------------------------------+

小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。 经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。如上,是游戏时画面截图。
其中,H 表示蛇头,T表示蛇尾。# 表示蛇的身体,@ 表示身体交叉重叠的地方。 你能说出现在的贪吃蛇长度是多少吗?
其实,只要数出 # 的数目算 1,数出 @的数目算的数目算2,再加上头尾各算,再加上头尾各算1$ 就计算好了。
人工数一下?太累眼睛了,聪明的你为什么不让计算机帮忙呢?
本题的要求就是: 请输出上图中贪食蛇的长度是多少?

思路
因为这是C组只要输出他的结果就可以当字符串识别到“@”个数+2其余的处空格为的都+1;

//这是提交的代码
#include<iostream>
#include<cstdio>
using namespace std;
int t=0; 
string s;
int main()
{
cout<<190<<'\n';
}
//答案是190个

//这是计算190的代码(如果你不想数的话)

#include<iostream>
#include<cstdio>
using namespace std;
string str;
int main()
{
    string str="+-------------------------------------------------+|                                                 ||    H######                      ####            ||          #                      #  #            ||          #                      #  #            ||          #     ####             #  #            ||          #     #  #             #  #            ||          ######@###             #  #            ||                #       ####     #  #            ||                #       #  #     #  #            ||            ####@#######@###     #  #            ||            #   #       #        #  #            || T          #####       #        #  #   ##       || #                      #      ###  ### ##       || ################       #      #      ####       ||                #       #      #         #       ||   ##############       #######@##########       ||   #                         ###                 ||   ###########################                   |+-------------------------------------------------+";
    int n=str.length();
    int t=0;
    for(int i=1;i<=n;i++)
    {
    	if(str[i]=='#')
    	t++;
    	else if(str[i]=='@')
    	t=t+2;
    	else if(str[i]=='H'||str[i]=='T')
    	t=t+1;
    }
    cout<<t<<'\n';
} 

就是将要输入的字符串作为字符串形式输出计算个数

2.兴趣小组

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
为丰富同学们的业余文化生活,某高校学生会创办了 3 个兴趣小组(以下称 A 组,B 组,C 组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中(可在题目末尾复制)。
每个文件中存储的是学生的学号。
由于工作需要,我们现在想知道:既参加了 A 组,又参加了 B 组,但是没有参加 C 组的同学一共有多少人?
请你统计该数字并提交答案。
笨笨有话说:哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。不过,可以排序啊,要是每个文件都是有序的,那就好多了。
歪歪有话说:排什么序啊,这么几行数字对计算机不是太轻松了吗?我看着需求怎么和中学学过的集合很像啊…

A

//A.txt
12894792, 92774113, 59529208, 22962224, 02991600, 83340521, 87365045, 
40818286, 16400628, 39475245, 55933381, 76940287, 61366748, 95631228, 
17102313, 50682833, 61562613, 87002524, 83062019, 51743442, 61977890, 
32010762, 69680621, 87179571, 81761697, 32364296, 07833271, 36198035, 
26588918, 84046668, 43059468, 73191775, 56794101, 00454780, 11141030, 
10008994, 35072237, 44945158, 53959980, 75758119, 18560273, 35801494, 
42102550, 22496415, 03981786, 34593672, 13074905, 07733442, 42374678, 
23452507, 98586743, 30771281, 17703080, 52123562, 05898131, 56698981, 
90758589, 18238802, 18217979, 04511837, 75682969, 31135682, 55379006, 
42224598, 98263070, 40228312, 28924663, 11580163, 25686441, 45944028, 
96731602, 53675990, 03854194, 14858183, 16866794, 40677007, 73141512, 
32317341, 56641725, 43123040, 15201174, 62389950, 72887083, 76860787, 
61046319, 06923746, 17874548, 46028629, 10577743, 48747364, 05328780, 
59855415, 60965266, 20592606, 14471207, 70896866, 46938647, 33575820, 
53426294, 56093931, 51326542, 94050481, 80114017, 33010503, 72971538, 
22407422, 17305672, 78974338, 93209260, 83461794, 41247821, 26118061, 
10657376, 42198057, 15338224, 50284714, 32232841, 26716521, 76048344, 
23676625, 62897700, 69296551, 59653393, 38704390, 48481614, 69782897, 
26850668, 37471053, 88720989, 51010849, 94951571, 60024611, 29808329, 
70377786, 13899299, 09683688, 58218284, 46792829, 97221709, 45286643, 
48158629, 57367208, 26903401, 76900414, 87927040, 09926730, 01508757, 
15101101, 62491840, 43802529, 

B

//B.txt
44894050, 34662733, 44141729, 92774113, 99208727, 91919833, 23727681, 
10003409, 55933381, 54443275, 13584702, 96523685, 50682833, 61562613, 
62380975, 20311684, 93200452, 23101945, 42192880, 28992561, 18460278, 
19186537, 58465301, 01111066, 62680429, 23721241, 20277631, 91708977, 
57514737, 03981786, 81541612, 07346443, 93154608, 19709455, 37446968, 
17703080, 72378958, 66200696, 30610382, 89586343, 33152171, 67040930, 
35696683, 63242065, 99948221, 96233367, 52593493, 98263070, 01418023, 
74816705, 89375940, 58405334, 96731602, 84089545, 16866794, 94737626, 
01673442, 70548494, 13638168, 08163691, 11106566, 64375392, 40267902, 
00897705, 56447313, 54532235, 94738425, 66642634, 83219544, 40546096, 
66924991, 20592606, 96037590, 73434467, 70896866, 91025618, 57892091, 
08487641, 32500082, 84412833, 23311447, 38380409, 79957822, 72971538, 
69645784, 91863314, 73099909, 93209260, 83461794, 81378487, 30423273, 
22233715, 32232841, 26716521, 03511221, 29196547, 58263562, 56233305, 
52547525, 55812835, 87253244, 52484232, 80837360, 94098464, 52028151, 
53267501, 66381929, 84381316, 59788467, 09683688, 67082008, 71605255, 
80654064, 21434307, 45286643, 76556656, 82465821, 57367208, 79218980, 
48460468, 59170479, 46046391, 43043164, 96544490, 83340521, 70837892, 
18926791, 40818286, 28936302, 11489524, 51031183, 73860337, 13241219, 
09025448, 10718828, 76360986, 26031606, 76558053, 97726139, 46473415, 
48406387, 23625539, 86756012, 35164187, 49161302, 78082834, 35072237, 
08602486, 29815841, 56562216, 77684187, 81751704, 20160464, 50407962, 
27786415, 19893526, 00934129, 37759498, 52636463, 25666982, 43262852, 
38393436, 02581136, 29323250, 56950657, 05898131, 95286262, 75574581, 
54057961, 06703896, 90758589, 57782642, 34492535, 41919697, 06395464, 
10993500, 81212949, 34017532, 69569396, 99009936, 57129610, 67401593, 
71044018, 62076698, 29533873, 71936325, 86874388, 26545032, 35695544, 
30433724, 53127345, 72887083, 25390873, 63711546, 06923746, 27783723, 
33199575, 35929698, 16491251, 18276792, 62744775, 92096155, 06336570, 
56141974, 73007273, 31416832, 00171057, 64176982, 46938647, 58460388, 
69972026, 73724304, 27435484, 51568616, 15531822, 47788699, 11818851, 
41594694, 83561325, 43107163, 56965375, 10557343, 26118061, 74650126, 
90076467, 10657376, 49901436, 03425162, 61164599, 15797769, 05427896, 
14444084, 36795868, 18079449, 59653393, 72942548, 06763077, 33895610, 
94892653, 12085268, 65174140, 79567366, 23020126, 74290047, 13498869, 
21696323, 27724594, 54941003, 38229841, 07050068, 

C

//C.txt
13404901, 39952424, 47847739, 94939581, 13809950, 70966043, 11161555, 
17102313, 47079425, 50682833, 74154313, 61562613, 93200452, 37103342, 
18479435, 32502597, 36198035, 54210010, 73191775, 48358178, 85544503, 
05996766, 54651623, 52113220, 27465181, 23871783, 22496415, 54107041, 
65899605, 56528700, 82671109, 61176034, 42374678, 51612628, 63329997, 
56591652, 04552733, 12789324, 89586343, 51935014, 38611966, 43916409, 
70996050, 98263070, 01418023, 65345049, 21734275, 76846198, 71506230, 
00833171, 67128139, 41367555, 64769510, 44010700, 16475199, 93164325, 
09386162, 95324041, 80688223, 67629139, 79552617, 76219736, 50368644, 
45096021, 54972488, 63779011, 28862942, 73145521, 74078605, 66924991, 
12806850, 02171001, 70896866, 73434467, 08487641, 44415025, 32500082, 
84412833, 83896188, 52243759, 49191410, 38744339, 48079796, 44937032, 
06267501, 81866886, 38575984, 25978688, 78974338, 41247821, 12356966, 
64842303, 79127158, 02366944, 68000570, 12426275, 96409230, 00705972, 
08266503, 83820884, 08831807, 43273308, 23216105, 29196547, 95160161, 
05553537, 52182214, 32641346, 91553427, 24436506, 77433749, 01979664, 
52028151, 88985343, 01761499, 76203088, 63237368, 23405334, 59788467, 
09683688, 67755443, 29946533, 12053603, 00437479, 15200030, 45286643, 
93537527, 82465821, 57367208, 53899751, 15354933, 97760830, 68933762, 
80220545, 01892750, 39868288, 21524323, 69716610, 65083815, 78048499, 
03227391, 83340521, 87365045, 71720254, 51031183, 89168555, 08503028, 
37086236, 25103057, 87002524, 22808816, 80928090, 90741678, 15993372, 
99117082, 49938176, 21755083, 86903426, 87830263, 53959980, 75758119, 
59781354, 58679691, 25666982, 56307643, 47180521, 62776522, 78136608, 
44882734, 90758589, 08075999, 66303819, 23480347, 11580163, 87080118, 
18329165, 92514163, 89404632, 92377859, 03912329, 17499963, 59699979, 
79876366, 63894807, 37857001, 86003935, 90087123, 29433345, 80298948, 
61531153, 61046319, 37839841, 19421134, 48747364, 35196916, 62484573, 
59907079, 36845702, 21631642, 72739317, 26283700, 80114017, 76639390, 
29154110, 35159758, 47788699, 11818851, 56520669, 36396767, 36031167, 
83817428, 10657376, 90076467, 14676452, 11024560, 16327605, 76048344, 
14444084, 95452011, 99612346, 65172562, 84813675, 88618282, 38704390, 
27998014, 63859011, 33787505, 60024611, 16229880, 13899299, 35240335, 
29173227, 45036451, 66177893, 82658333, 43100730, 44520187, 74290047, 
85013538, 09926730, 27724594, 95148523, 20503000, 64390907, 26006953, 
98116293, 97457666, 29017396, 04634371, 70791589, 

代码思路
蓝桥杯就暴力呗,将他给的A,B,C都作为int类型数组(但这里要注意如“01418023”这样不属于int类型)因此表示为“1418023”插入数组
如何得出答案

#include<iostream>
#include<cstdio>
using namespace std;
int a[300]={12894792, 92774113, 59529208, 22962224, 2991600, 83340521, 87365045, 
40818286, 16400628, 39475245, 55933381, 76940287, 61366748, 95631228, 
17102313, 50682833, 61562613, 87002524, 83062019, 51743442, 61977890, 
32010762, 69680621, 87179571, 81761697, 32364296, 7833271, 36198035, 
26588918, 84046668, 43059468, 73191775, 56794101, 454780, 11141030, 
10008994, 35072237, 44945158, 53959980, 75758119, 18560273, 35801494, 
42102550, 22496415, 3981786, 34593672, 13074905, 07733442, 42374678, 
23452507, 98586743, 30771281, 17703080, 52123562, 5898131, 56698981, 
90758589, 18238802, 18217979, 4511837, 75682969, 31135682, 55379006, 
42224598, 98263070, 40228312, 28924663, 11580163, 25686441, 45944028, 
96731602, 53675990, 3854194, 14858183, 16866794, 40677007, 73141512, 
32317341, 56641725, 43123040, 15201174, 62389950, 72887083, 76860787, 
61046319, 6923746, 17874548, 46028629, 10577743, 48747364, 5328780, 
59855415, 60965266, 20592606, 14471207, 70896866, 46938647, 33575820, 
53426294, 56093931, 51326542, 94050481, 80114017, 33010503, 72971538, 
22407422, 17305672, 78974338, 93209260, 83461794, 41247821, 26118061, 
10657376, 42198057, 15338224, 50284714, 32232841, 26716521, 76048344, 
23676625, 62897700, 69296551, 59653393, 38704390, 48481614, 69782897, 
26850668, 37471053, 88720989, 51010849, 94951571, 60024611, 29808329, 
70377786, 13899299, 9683688, 58218284, 46792829, 97221709, 45286643, 
48158629, 57367208, 26903401, 76900414, 87927040, 9926730, 1508757, 
15101101, 62491840, 43802529};
int b[300]={
44894050, 34662733, 44141729, 92774113, 99208727, 91919833, 23727681, 
10003409, 55933381, 54443275, 13584702, 96523685, 50682833, 61562613, 
62380975, 20311684, 93200452, 23101945, 42192880, 28992561, 18460278, 
19186537, 58465301, 01111066, 62680429, 23721241, 20277631, 91708977, 
57514737, 3981786, 81541612, 07346443, 93154608, 19709455, 37446968, 
17703080, 72378958, 66200696, 30610382, 89586343, 33152171, 67040930, 
35696683, 63242065, 99948221, 96233367, 52593493, 98263070, 1418023, 
74816705, 89375940, 58405334, 96731602, 84089545, 16866794, 94737626, 
01673442, 70548494, 13638168, 8163691, 11106566, 64375392, 40267902, 
897705, 56447313, 54532235, 94738425, 66642634, 83219544, 40546096, 
66924991, 20592606, 96037590, 73434467, 70896866, 91025618, 57892091, 
8487641, 32500082, 84412833, 23311447, 38380409, 79957822, 72971538, 
69645784, 91863314, 73099909, 93209260, 83461794, 81378487, 30423273, 
22233715, 32232841, 26716521, 03511221, 29196547, 58263562, 56233305, 
52547525, 55812835, 87253244, 52484232, 80837360, 94098464, 52028151, 
53267501, 66381929, 84381316, 59788467, 9683688, 67082008, 71605255, 
80654064, 21434307, 45286643, 76556656, 82465821, 57367208, 79218980, 
48460468, 59170479, 46046391, 43043164, 96544490, 83340521, 70837892, 
18926791, 40818286, 28936302, 11489524, 51031183, 73860337, 13241219, 
9025448, 10718828, 76360986, 26031606, 76558053, 97726139, 46473415, 
48406387, 23625539, 86756012, 35164187, 49161302, 78082834, 35072237, 
8602486, 29815841, 56562216, 77684187, 81751704, 20160464, 50407962, 
27786415, 19893526, 934129, 37759498, 52636463, 25666982, 43262852, 
38393436, 2581136, 29323250, 56950657, 5898131, 95286262, 75574581, 
54057961, 6703896, 90758589, 57782642, 34492535, 41919697, 6395464, 
10993500, 81212949, 34017532, 69569396, 99009936, 57129610, 67401593, 
71044018, 62076698, 29533873, 71936325, 86874388, 26545032, 35695544, 
30433724, 53127345, 72887083, 25390873, 63711546, 6923746, 27783723, 
33199575, 35929698, 16491251, 18276792, 62744775, 92096155, 06336570, 
56141974, 73007273, 31416832, 00171057, 64176982, 46938647, 58460388, 
69972026, 73724304, 27435484, 51568616, 15531822, 47788699, 11818851, 
41594694, 83561325, 43107163, 56965375, 10557343, 26118061, 74650126, 
90076467, 10657376, 49901436, 03425162, 61164599, 15797769, 5427896, 
14444084, 36795868, 18079449, 59653393, 72942548, 06763077, 33895610, 
94892653, 12085268, 65174140, 79567366, 23020126, 74290047, 13498869, 
21696323, 27724594, 54941003, 38229841, 7050068};
int c[300]={
13404901, 39952424, 47847739, 94939581, 13809950, 70966043, 11161555, 
17102313, 47079425, 50682833, 74154313, 61562613, 93200452, 37103342, 
18479435, 32502597, 36198035, 54210010, 73191775, 48358178, 85544503, 
5996766, 54651623, 52113220, 27465181, 23871783, 22496415, 54107041, 
65899605, 56528700, 82671109, 61176034, 42374678, 51612628, 63329997, 
56591652, 04552733, 12789324, 89586343, 51935014, 38611966, 43916409, 
70996050, 98263070, 1418023, 65345049, 21734275, 76846198, 71506230, 
833171, 67128139, 41367555, 64769510, 44010700, 16475199, 93164325, 
9386162, 95324041, 80688223, 67629139, 79552617, 76219736, 50368644, 
45096021, 54972488, 63779011, 28862942, 73145521, 74078605, 66924991, 
12806850, 02171001, 70896866, 73434467, 8487641, 44415025, 32500082, 
84412833, 83896188, 52243759, 49191410, 38744339, 48079796, 44937032, 
06267501, 81866886, 38575984, 25978688, 78974338, 41247821, 12356966, 
64842303, 79127158, 2366944, 68000570, 12426275, 96409230, 705972, 
8266503, 83820884, 8831807, 43273308, 23216105, 29196547, 95160161, 
05553537, 52182214, 32641346, 91553427, 24436506, 77433749, 1979664, 
52028151, 88985343, 1761499, 76203088, 63237368, 23405334, 59788467, 
9683688, 67755443, 29946533, 12053603, 437479, 15200030, 45286643, 
93537527, 82465821, 57367208, 53899751, 15354933, 97760830, 68933762, 
80220545, 1892750, 39868288, 21524323, 69716610, 65083815, 78048499, 
3227391, 83340521, 87365045, 71720254, 51031183, 89168555, 8503028, 
37086236, 25103057, 87002524, 22808816, 80928090, 90741678, 15993372, 
99117082, 49938176, 21755083, 86903426, 87830263, 53959980, 75758119, 
59781354, 58679691, 25666982, 56307643, 47180521, 62776522, 78136608, 
44882734, 90758589, 8075999, 66303819, 23480347, 11580163, 87080118, 
18329165, 92514163, 89404632, 92377859, 3912329, 17499963, 59699979, 
79876366, 63894807, 37857001, 86003935, 90087123, 29433345, 80298948, 
61531153, 61046319, 37839841, 19421134, 48747364, 35196916, 62484573, 
59907079, 36845702, 21631642, 72739317, 26283700, 80114017, 76639390, 
29154110, 35159758, 47788699, 11818851, 56520669, 36396767, 36031167, 
83817428, 10657376, 90076467, 14676452, 11024560, 16327605, 76048344, 
14444084, 95452011, 99612346, 65172562, 84813675, 88618282, 38704390, 
27998014, 63859011, 33787505, 60024611, 16229880, 13899299, 35240335, 
29173227, 45036451, 66177893, 82658333, 43100730, 44520187, 74290047, 
85013538, 9926730, 27724594, 95148523, 20503000, 64390907, 26006953, 
98116293, 97457666, 29017396, 04634371, 70791589
};
int num[100];
int main()
{ 
	int t=0;
	for(int i=0;i<=149;i++)
	{
		for(int j=0;j<=249;j++)
		{
		   if(a[i]==b[j])     //数组a中的数据与数组b相等
		   {
		   	num[t++]=b[j];
		   }
		}
	}
	int ans=t;
	for(int i=1;i<=ans;i++)
	{
		for(int j=1;j<=249;j++)
		{
		if(num[i]==c[j])     //数组a,b相等并且c也相等的就把他减去留下来的就是既参加了 A 组,又参加了 B 组,但是没有参加 C 
		t--;
		}
	}
	cout<<t<<'\n';
}

答案输入

#include <iostream>
using namespace std;
int main()
{
  cout<<20<<endl;
  return 0;
}

先算既参加了 A 组,又参加了 B 组的个数,将这些数据记录下来,为数字num,然后就是减去既参加了 A 组,又参加了 B 组,又参加 C组的个数,得到的结果就是 既参加了 A 组,又参加了 B 组,但是没有参加 C 的个数

3.算式900

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明的作业本上有道思考题:

看下面的算式:

(□□□□-□□□□)*□□=900

其中的小方块代表 0 ~ 9 的数字,这 10 个方块刚好包含了 0 ~ 9 中的所有数字。 注意:0 不能作为某个数字的首位。
小明经过几天的努力,终于做出了答案!如下:

(5012-4987)*36=900

用计算机搜索后,发现还有另外一个解,本题的任务就是:请你算出这另外的一个解。
注意:输出格式需要与示例严格一致; 括号及运算符号不要用中文输入法; 整个算式中不能包含空格。

代码思路
这里他给我们0到9中的数,让我们填入到10个格子中,这10个格子中填入的数据不能重复,并且满足((□□□□-□□□□)*□□=900)这个条件
这里我们考虑到用就是让这0到9的数进行全排列,

#include<iostream>
#include<cstdio>
using namespace std;
int a[10]={0,1,2,3,4,5,6,7,8,9};
int ans1,ans2,ans3;
int main()
{
	do{
		if(a[0]==0||a[4]==0||a[8]==0)
		continue;
		else{
			ans1=a[0]*1000+a[1]*100+a[2]*10+a[3];
			ans2=a[4]*1000+a[5]*100+a[6]*10+a[7];
			ans3=a[8]*10+a[9];
			if(((ans1-ans2)*ans3)==900)
			cout<<ans1<<" "<<ans2<<" "<<ans3<<'\n';
		}//5012 4987 36
         //6048 5973 12
	}while(next_permutation(a,a+10));
}

提交的代码

#include <iostream>
using namespace std;
int main()
{
  cout<<"(6048-5973)*12=900";
  return 0;
}

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
X 星球的高科技实验室中整齐地堆放着某批珍贵金属原料。
每块金属原料的外形、尺寸完全一致,但重量不同。 金属材料被严格地堆放成金字塔形。

                             7 
                            5 8 
                           7 8 8 
                          9 2 7 2 
                         8 1 4 9 1 
                        8 1 8 8 4 1 
                       7 9 6 1 4 5 4 
                      5 6 5 5 6 9 5 6 
                     5 5 4 7 9 3 5 5 1 
                    7 5 7 9 7 4 7 3 3 1 
                   4 6 4 5 5 8 8 3 2 4 3 
                  1 1 3 3 1 6 6 5 5 4 4 2 
                 9 9 9 2 1 9 1 9 2 9 5 7 9 
                4 3 3 7 7 9 3 6 1 3 8 8 3 7 
               3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 
              8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 
             8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 
            2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 
           7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 
          9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 
         5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 
        6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 
       2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 
      7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 
     1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 
    2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 
   7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 
  7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 
 5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 

其中的数字代表金属块的重量(计量单位较大)。 最下一层的 XX 代表 3030 台极高精度的电子秤。
假设每块原料的重量都十分精确地平均落在下方的两个金属块上, 最后,所有的金属块的重量都严格精确地平分落在最底层的电子秤上。
电子秤的计量单位很小,所以显示的数字很大。
工作人员发现,其中读数最小的电子秤的示数为:2086458231
请你推算出:读数最大的电子秤的示数为多少?

代码思路

7 
5 8 
7 8 8 
9 2 7 2 
8 1 4 9 1 
8 1 8 8 4 1 
7 9 6 1 4 5 4 
5 6 5 5 6 9 5 6 
5 5 4 7 9 3 5 5 1 
7 5 7 9 7 4 7 3 3 1 
4 6 4 5 5 8 8 3 2 4 3 
1 1 3 3 1 6 6 5 5 4 4 2 
9 9 9 2 1 9 1 9 2 9 5 7 9 
4 3 3 7 7 9 3 6 1 3 8 8 3 7 
3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 
8 3 2 3 3 5 5 8 5 4 2 8 6 7 6 9 
8 1 8 1 8 4 6 2 2 1 7 9 4 2 3 3 4 
2 8 4 2 2 9 9 2 8 3 4 9 6 3 9 4 6 9 
7 9 7 4 9 7 6 6 2 8 9 4 1 8 1 7 2 1 6 
9 2 8 6 4 2 7 9 5 4 1 2 5 1 7 3 9 8 3 3 
5 2 1 6 7 9 3 2 8 9 5 5 6 6 6 2 1 8 7 9 9 
6 7 1 8 8 7 5 3 6 5 4 7 3 4 6 7 8 1 3 2 7 4 
2 2 6 3 5 3 4 9 2 4 5 7 6 6 3 2 7 2 4 8 5 5 4 
7 4 4 5 8 3 3 8 1 8 6 3 2 1 6 2 6 4 6 3 8 2 9 6 
1 2 4 1 3 3 5 3 4 9 6 3 8 6 5 9 1 5 3 2 6 8 8 5 3 
2 2 7 9 3 3 2 8 6 9 8 4 4 9 5 8 2 6 3 4 8 4 9 3 8 8 
7 7 7 9 7 5 2 7 9 2 5 1 9 2 6 5 3 9 3 5 7 3 5 4 2 8 9 
7 7 6 6 8 7 5 5 8 2 4 7 7 4 7 2 6 9 2 1 8 2 9 8 5 7 3 6 
5 9 4 5 5 7 5 5 6 3 5 3 9 5 8 9 5 4 1 2 6 1 4 3 5 3 2 4 1 
X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 

将数据变成这样可能会好理解一点

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
double a[30][30];
int main()
{
	for(int i=0;i<=29;i++)
	{
		for(int j=0;j<=i;j++)
		{
			scanf("%lf",&a[i][j]);
		}
	}
	for(int i=0;i<=29;i++)
	{
		for(int j=0;j<=i;j++)
		{
			double num=a[i][j]/2;
			a[i+1][j]+=num;
			a[i+1][j+1]+=num;
		}
	}
	double num[30];
	for(int i=0;i<=29;i++)
	{
		num[i]=a[29][i];
	}
	sort(num,num+30);
	printf("%.0lf",2086458231/num[0]*num[29]);   //72665192664
}

坑点
这边题目上说最小的电子秤的示数为:208645823这与我们算出的最小重量不等因此我们要通过

2086458231/num[0]这样先进行转化转成他的重量在乘以最大重量数,那就是要的答案
及2086458231/num[0]*num[29]

4.杨辉三角

题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。

第0行: 1
第1行: 1 1
第2行: 1 2 1
第3行: 1 3 3 1
第4行: 1 4 6 4 1

两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。
我们约定,行号,列号都从 0 计数。所以: 第 6 行的第 2 个元素是 15,第 3 个元素是 20。
直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。 如下程序就是用一维数组“腾挪”的解法。
请仔细分析源码,填写划线部分缺少的内容。
源代码
C

// 杨辉三角的第row行,第col列 
long long f(int row, int col){
    if(row<2) return 1;
    if(col==0) return 1;
    if(col==row) return 1;
    
    long long a[1024];
    a[0]=1;
    a[1]=1;    
    int p = 2;
    int q;
    
    while(p<=row){
        a[p] = 1;
        for(_________________) a[q] = a[q] + a[q-1]; //填空
        p++;
    }
    
    return a[col];
}

int main()
{
    printf("%d\n", f(6,2));
    printf("%d\n", f(6,3));
    printf("%lld\n", f(40,20));    
    return 0;
}

请仔细分析源码,并完成划线部分缺少的代码。
注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。

一维的杨辉三角的模板

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
	int n,i,j,k,a[1001];
	scanf("%d",&n);
	for(i=0;i<n-1;i++)
   printf(" ");
   printf("1\n");
   a[1]=a[2]=1;
   for(i=0;i<n-2;i++)
   printf(" ");
   printf("%d %d\n",a[1],a[2]);
   for(i=3;i<=n;i++)
   {
   	a[1]=a[i]=1; //将第一个数和最后一个数为1 
   	for(j=i-1;j>1;j--)    //这样就和上面填空类似
	   	a[j]=a[j]+a[j-1];
		for(k=1;k<=n-i;k++)
		printf(" ");
		for(j=1;j<=i;j++)
		printf("%d ",a[j]);
		printf("\n");
   }
}

5.最长公共子序列

题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。
最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少。
比如:“abcdkkk” 和 “baabcdadabc”, 可以找到的最长的公共子串是"abcd",所以最大公共子串长度为 4。
下面的程序是采用矩阵法进行求解的,这对串的规模不大的情况还是比较有效的解法。
请分析该解法的思路,并补全划线部分缺失的代码。
源代码
C

#include <stdio.h>
#include <string.h>

#define N 256
int f(const char* s1, const char* s2)
{
    int a[N][N];
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int i,j;
    
    memset(a,0,sizeof(int)*N*N);
    int max = 0;
    for(i=1; i<=len1; i++){
        for(j=1; j<=len2; j++){
            if(s1[i-1]==s2[j-1]) {
                a[i][j] = __________________________; 
                if(a[i][j] > max) max = a[i][j];
            }
        }
    }
    
    return max;
}

int main()
{
    printf("%d\n", f("abcdkkk", "baabcdadabc"));
    printf("%d\n", f("aaakkkabababa", "baabababcdadabc"));
    printf("%d\n", f("abccbaacbcca", "ccccbbbbbaaaa"));    
    printf("%d\n", f("abcd", "xyz"));
    printf("%d\n", f("ab", "ab"));
    return 0;
}

代码分析
做最长公共子序列的问题,首先我们需要知道什么是最长公共子序列子序列就是给定序列去掉0个或多个后产生的结果
请添加图片描述

请添加图片描述

#include <stdio.h>
#include <string.h>
#define N 256
int f(const char* s1, const char* s2)
{
       int a[N][N];
       int len1 = strlen(s1);
       int len2 = strlen(s2);
       int i,j;
       
       memset(a,0,sizeof(int)*N*N);
       int max = 0;
       for(i=1; i<=len1; i++){
              for(j=1; j<=len2; j++){
                     if(s1[i-1]==s2[j-1]) {
                            a[i][j] =a[i-1][j-1]+1;  //填空
                            if(a[i][j] > max) 
                            max = a[i][j];
                     }
              }
       }
       return max;
}
int main()
{
    printf("%d\n", f("abcdkkk", "baabcdadabc"));
    printf("%d\n", f("aaakkkabababa", "baabababcdadabc"));
    printf("%d\n", f("abccbaacbcca", "ccccbbbbbaaaa"));    
    printf("%d\n", f("abcd", "xyz"));
    printf("%d\n", f("ab", "ab"));
    return 0;
}

这里用的就是dp动态规划来做 if(s1[i-1]==s2[j-1]) 当字符相等+1,并将最大的数写入a[i][j]中

6.Excel地址

题目描述
Excel 单元格的地址表示很有趣,它使用字母来表示列号。

比如,

A 表示第 1 列,

B 表示第 2 列,

Z 表示第 26 列,

AA 表示第 27 列,

AB 表示第 28 列,

BA 表示第 53 列,

当然 Excel 的最大列号是有限度的,所以转换起来不难。
如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?
本题目即是要求对输入的数字, 输出其对应的 Excel 地址表示方式。
输入描述
输入一个整数 n,其范围 [1,2147483647]。

输出描述
输出 n 对应的 Excel 地址表示方式。

输入输出样例
示例
输入

26

输出

Z

代码描述

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    long long n;
    int t=0;
    cin>>n;
    char str[26]={'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'};
    char s[30];
    while(n)
    {
        s[t++]=str[(n-1)%26];
        n=(n-1)/26;
    }
    for(int i=t-1;i>=0;i--)
    cout<<s[i]; 
}

请添加图片描述

7.九宫幻方

题目描述
小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将 1~9 不重复的填入一个 3*3 的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。
三阶幻方又被称作九宫格,在小学奥数里有一句非常有名的口诀:“二四为肩,六八为足,左三右七,戴九履一,五居其中”,通过这样的一句口诀就能够非常完美的构造出一个九宫格来。

4 9 2
3 5 7
8 1 6

有意思的是,所有的三阶幻方,都可以通过这样一个九宫格进行若干镜像和旋转操作之后得到。现在小明准备将一个三阶幻方(不一定是上图中的那个)中的一些数抹掉,交给邻居家的小朋友来进行还原,并且希望她能够判断出究竟是不是只有一个解。
而你呢,也被小明交付了同样的任务,但是不同的是,你需要写一个程序。

输入描述
输入仅包含单组测试数据。
每组测试数据为一个 3*3 的矩阵,其中为 0 的部分表示被小明抹去的部分。
给出的矩阵至少能还原出一组可行的三阶幻方。

输出描述
如果仅能还原出一组可行的三阶幻方,则将其输出,否则输出"Too Many"(不包含引号)。

输入输出样例
输入

0 7 2
0 5 0
0 3 0

输出

6 7 2
1 5 9
8 3 4

代码及思路
这个九宫幻方幻方难点就是你能不能发现他的规律他无论则么变都要满足9个板子也就是下面代码的mapp数组
因此我们就要判断他输入的符合那个板子,将符合的板子输出,没有符合的就输入"Too Many"

#include<iostream>
#include<cstdio>
using namespace std;
int mapp[9][9]={          //九个板子
	{4,9,2,3,5,7,8,1,6},
	{8,3,4,1,5,9,6,7,2},
	{6,1,8,7,5,3,2,9,4},
	{2,7,6,9,5,1,4,3,8},
    {2,9,4,7,5,3,6,1,8},
    {4,3,8,9,5,1,2,7,6},
    {8,1,6,3,5,7,4,9,2},
    {6,7,2,1,5,9,8,3,4}
};
int a[11],num=-1;
int main()
{
	for(int i=0;i<9;i++)
	cin>>a[i];
	for(int i=0;i<9;i++)
	{
		int t=0;
		for(int j=0;j<9;j++)
		{
			if(a[j]==0)
			t++;
			else if(a[j]==mapp[i][j])
			t++; 
			if(t==9)
			{
				num=i;
				break;
			}
		}
	}
	if(num!=-1)
	{
		for(int i=0;i<=8;i++)
		{
			if(i%3==0&&i!=0)
			cout<<'\n';
			cout<<mapp[num][i]<<" ";
		}
	}
	else
	cout<<"Too Many"<<'\n';
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lioushuishoushou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值