1
九阴白骨
Problem:A
Time Limit:1000ms
Memory Limit:65536K
Description
复制代码
1九阴白骨爪是射雕英雄传里的邪门武功,该武功用人类的头盖骨进行修炼,然后将骷髅头整齐的排在地上或草丛中,3层的排列方案是品字形,既第1行1个,第2行3个,第3行5个;已经有一天梅超风已经修改完成了该门武功,且骷髅头的堆也变得很高,排列规律从未改变。现在她想用计算机来统计一下这堆骷髅头上共有多少个手指洞(请10岁以下同学切莫模仿)
Input
复制代码
1
2
3输入数据有多组,没组1个数N (1 <= N < 100 ),代表骷髅头的层数;
Output
复制代码
1对于每组数据,在1行内输出这堆骷髅头的手指洞总数。
Sample Input
复制代码
1
21 2
Sample Output
复制代码
1
25 20
出题本意是用递归写
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#include<cstdio> #include<iostream> using namespace std; long long lhy(int t) { if(t-1>=1) return 2*t-1+lhy(t-1); else return 1; } int main() { long int i,j,k,p,t; while(cin>>t) { cout<<lhy(t)*5<<endl; } return 0; }
2
凤舞九天
Problem:B
Time Limit:1000ms
Memory Limit:65536K
Description
复制代码
1
2
3“凤舞九天”是陆小凤的一门武功招式,每次出招的攻击次数不同,第1次攻击1次,第2次攻击1次;然后n次的攻击满足下面的公式: f[n]=(6*f[n-1]+8*f[n-2])%9; (n >=3) 为啥对9取余呢?因为是凤舞九天啊!要是凤舞七天的话,就对7取余了!
Input
复制代码
1输入数据有多组,每组1个数n (1 <= n <=100);
Output
复制代码
1对于每组数据,在一行内输出第n次出招时,攻击的次数是多少?
Sample Input
复制代码
1
2
31 3 100
Sample Output
复制代码
1
2
31 5 2
这个题告诉我们,算数字的时候可以预处理加速
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410#include <stdio.h> #include <stdlib.h> #include <math.h> int a[205]; int f(int n) { int i; a[1]=1; a[2]=1; for(i=3;i<=100;i++) {a[i]=(6*a[i-1]+8*a[i-2])%9;} return a[i]; } int main() { int n;
复制代码while(scanf("%d",&n)!=-1) { printf("%dn",a[n]); } return 0;}f(150);
复制代码
3求导
Problem:C
Time Limit:1000ms
Memory Limit:65536K
Description
复制代码大一的同学必须要注意,刚来林大的第一次考试是不及格最多的,因为大家都放松了警惕,最容易挂科的是高等数学,现在我们一起把数学复习一下。已知函数f(x)=3x2+2x+4,则它的导函数可以写成(f(x+h)-f(x))/(x+h-x),即f(x)的导可以表示为: (f(x+h)-f(x))/h,现在给你x和h值,你会计算它的导数吗?Input
复制代码输入数据有多组,每组1行,每行2个数x和h,这2个数是实数.Output
复制代码按照题中的描述,输出f(x)的导数值,结果保留2位小数,记得用双精度(double)和换行啊!Sample Input
复制代码2 0.1 4 0.1Sample Output
复制代码14.30 26.30Hint
复制代码输入数据多组用while(scanf("%lf%lf",&x,&h)!=EOF),x和h定义成double
求导……题目咋说你咋写就行了
复制代码#include <stdio.h> #include <stdlib.h> float f(float a) { return 3*a*a+2*a+4; } int main() { float x,h; while (scanf("%f%f",&x,&h)!=EOF) printf("%.2fn",(f(x+h)-f(x))/h); return 0; }
4大表哥的黑客技术
Problem:D
Time Limit:1000ms
Memory Limit:65536K
Description
复制代码大表哥最近在图书馆借了一本黑客入门,学会了如何用360查杀病毒和修复漏洞。现在他无论什么问题都想运用黑客技术来解决,但是由于大表哥太菜了。所以虽然今天这道题很简单。能麻烦你运用函数帮助大表哥解决一下吗?Input
复制代码输入一个n,接下来输入n个数a1~an。(n<1000,保证ai<2^32)Output
复制代码输出a1~an的平方和。是不是很简单,但是要求用函数哦Sample Input
复制代码2 1 2 3 1 2 3Sample Output
复制代码5 14
我看好多人把题意想复杂了,没说让你递归读入数据啊
而且啊 怎么都用unsigned long int ……用long long 多省事
复制代码#include <iostream> #include <cstdio> #include <string.h> #include <algorithm> using namespace std; long long fun(int x,int a[]) { int i; long long sum=0,k; for(i=0;i<x;i++) { k=a[i]; sum+=k*k; } return sum; } int main() { int n,j; int b[1010]; long long sum1; while(cin>>n) { for(j=0;j<n;j++) scanf("%d",&b[j]); sum1=fun(n,b); cout<<sum1<<endl; } }
5
字符集合
Problem:E
Time Limit:1000ms
Memory Limit:65535K
Description
复制代码编写函数向给定一个字符集合中,插入一个新字符到指定位置:已知一个字符集,给定一个插入位置k,向该位置插入一个新字符。本题10分Input
复制代码输入数据有多组,每组的第1行为n(<5),表示一组测试数据中字符集的个数,接下来原始字符串集(字符个数<100),插入的字符及位置;Output
复制代码输出插入后的新字符集,每组数据单独一行。Sample Input
复制代码3 the c test D 5 Now,you can commit. Y 8 the game over. N 6Sample Output
复制代码the cD test Now,you Ycan commit. the gaNme over.Hint
复制代码注意原始数据输入时,回车的处理。 输出正常输完一行加个换行。
差不多就是下面这个意思吧,
复制代码#include<stdio.h> void insert(char str[],char ins,int pos) { int i; for(i=0;i<pos;i++) printf("%c",str[i]); printf("%c",ins); printf("%sn",str+pos);//后面的字符直接这样输出就好啦~~ } int main() { // freopen("data.in","r",stdin); char str[200]; int T,pos; char ins[2]; scanf("%d",&T); while(T--) { getchar();//读入多余回车换行符号 gets(str); scanf("%s",ins); scanf("%d",&pos); insert(str,ins[0],pos); } return 0; }
最后
以上就是光亮哈密瓜最近收集整理的关于2016级ACM寒假训练(五)的全部内容,更多相关2016级ACM寒假训练(五)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复