第十五届现场编程比赛初赛(普及组)
来源:互联网 发布:网络交友有利还是有弊 编辑:程序博客网 时间:2024/06/06 04:00
A :次方的和
编程可以解决很多数学问题。请编程实现求一个数列 {n^K}(K为常数)的前N项和SN。
Sn = 1^K+2^K+3^K+4^K+……n^K.Input Specification:
第一行输入一个自然数T,表示有T组数据。
下面T行,每行输入两个整数N, K。其中0 < N < 50, 0 < K < 11。
N表示项数,K是数列元素的指数。Output Specification:
每组数据对应一个整数SN。Sample Input:
11 2
Sample Output:
1
本题要注意的有两点:
1、数据比较大,要用long long存储。
2、不能用math.h里的pow(),即使用floor(pow()+0.5)也会存在误差。
<span style="font-size:14px;">#include <stdio.h>#include <math.h>//自己实现Pow函数long long Pow(int a, int b){ long long ans = 1; while(b --) { ans *= a; } return ans;}int main(){ int T, N, K, i; long long s = 0; scanf("%d", &T); while(T --) { scanf("%d%d", &N, &K); for(i = 1; i <= N; i ++) { s += Pow(i, K);// s += pow(i, K); //一定有误差,自己测试。// s += floor(pow(i, K) + 0.5); //floor(m)是取不超过m的最大整数,但是还是不能避免误差。 } printf("%lld\n", s); s = 0; } return 0;}</span>
测试数据:
Input:
4
22 10
41 10
44 4
32 1
Output:
67403375450475
57013865269490101
34885686
528
B:约分最简分式
分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数形式。
Input Specification:
输入在一行中给出一个分数,分子和分母中间以斜杠“/”分隔,如: 12/34 表示34分之12。分子和分母都是正整数(不包含0,如果不清楚正整数的定义的话)。
Output Specification:
在一行中输出这个分数对应的最简分式,格式与输入的相同,即采用“分子/分母”的形式表示分数。如 5/6表示6分之5。
Sample Input:
60/120
Sample Output:
1/2
来源:http://www.patest.cn/contests/mooc-c/05-1
题目很简单,直接上代码。
<span style="color:#009900;"><span style="font-size:14px;">#include <stdio.h>//辗转相除法求最大公约数int gcd(int x, int y){ int r; while (y != 0) { r = x % y; x = y; y = r; } return x;}int main(){ int a, b; scanf("%d/%d", &a, &b); int c = gcd(a, b); printf("%d/%d", a/c, b/c); return 0;}</span></span>
C:数字分类
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
· A1 = 能被5整除的数字中所有偶数的和;
· A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
· A3 = 被5除后余2的数字的个数;
· A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
· A5 = 被5除后余4的数字中最大数字。
Input Specification:
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
Output Specification:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。
Sample Input:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
Sample Output:
30 11 2 9.7 9
来源:http://www.patest.cn/contests/pat-b-practise/1012
这题只要对数组了解即可,没有算法什么成分。
<span style="color:#009900;">#include <stdio.h>int main(){ int a[1005], N, i; int n1 = 0, n3 = 0; scanf("%d", &N); int A1 = 0, A2 = 0, A3 = 0, A5 = -1; double A4 = 0; for(i = 0; i < N; i++) scanf("%d", &a[i]); for(i = 0; i < N; i++) { if(a[i] % 5 == 0 && a[i] % 2 == 0) A1 += a[i]; if(a[i] % 5 == 2) A3++; if(a[i] % 5 == 3) { A4 += a[i]; n3++; } if(a[i] % 5 == 4) A5 = a[i] > A5 ? a[i] : A5; if(a[i] % 5 == 1) { if(n1 % 2) a[i] = -a[i]; A2 += a[i]; n1++; } } if(A1 == 0) printf("N "); else printf("%d ", A1); if(n1 == 0) printf("N "); else printf("%d ", A2); if(A3 == 0) printf("N "); else printf("%d ", A3); if(n3 == 0) printf("N "); else printf("%.1lf ", A4 / n3); if(A5 == -1) printf("N"); else printf("%d", A5); return 0;}</span>
D:换个格式输出整数
让我们用字母B来表示“百”、字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。
Input Specification:
每个测试输入包含1个测试用例,给出正整数n(<1000)。
Output Specification:
每个测试用例的输出占一行,用规定的格式输出n。
Sample Input:
234
Sample Output:
BBSSS1234
这题也是比较水的题,AC率很高。。。
<span style="color:#009900;">#include <stdio.h>int main(){ int n, i; scanf("%d", &n); for(i = 0; i < n / 100; i ++) { printf("B"); } for(i = 0; i < n / 10 % 10; i ++) { printf("S"); } for(i = 1 ;i <= n % 10; i ++) { printf("%d", i); } printf("\n"); return 0;}</span>
E:猴子选大王
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1-N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。假设总共有604只猴子,请问是原来第几号猴子当选猴王?Output Specification:
输出当选猴王的编号。
本来想通过输入N,输出原来当选猴子的大王是几号。但是降低题目难度,就只要一个答案。
<span style="font-size:18px;color:#009900;">#include <stdio.h>int main(){ printf("215\n"); return 0;}</span>
F:骨牌铺方格
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
Input Specification:
输入一个整数T,表示有T组测试数据。(0<=T<=50)
以下的T行,每行一个测试实例。
每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
Output Specification:
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
Sample Input:
3
1
3
2
Sample Output:
1
3
2
来源:http://acm.hdu.edu.cn/showproblem.php?pid=2046
这题和爬楼梯的题目是一个道理,如果爬楼梯的题目都没做过,还是先看爬楼梯吧。我改了下输入格式,其他的一样。
<span style="font-size:18px;color:#009900;">#include <stdio.h>int main(){ long long f[51] = {1,2,3}; for(int i = 3; i < 51; i ++) { f[i] = f[i-1] + f[i-2]; } int T, n; scanf("%d", &T); while(T--) { scanf("%d", &n); printf("%lld\n", f[n-1]); } return 0;}</span>
为什么这么解呢?我们参考一下别人的博客吧~
http://blog.csdn.net/lishuhuakai/article/details/8531214
以上就是普及组初赛的所有题目,如果觉得自己的程序是对的,但是AC不了。请联系科协软件部部长。
- 第十五届现场编程比赛初赛(普及组)
- 第十五届现场编程比赛初赛(提高组)
- 现场编程比赛普及组初赛答案
- 现场编程比赛普及组决赛题解
- 普及组初赛总结
- noip2016普及组初赛答案
- NOIP 2015 普及组 初赛
- NOIP2017普及组初赛总结
- NOIP 2017 普及组 初赛
- NOIP2009初赛普及组(C语言)参考答案
- noip2011普及组初赛卷(包括答案)
- NOIP2017普及组比赛总结
- 2016noip普及组初赛答案
- 2017NOIP普及组初赛感想
- NOIP2017 普及初赛 RP--(崩塌)
- 英雄会第四届编程大赛·CSDN现场决赛:比赛得分
- 物联网学生科协第三届H-star现场编程比赛
- NOIP普及组2017比赛总结
- 第13周项目5-字符串操作-(1.4)
- iid什么意思
- 第十三周项目六体验文件操作(5-实战)
- IOS闭包循环引用(Swift)
- gaga
- 第十五届现场编程比赛初赛(普及组)
- Android PopupWindow介绍及实现菜单效果
- 数据统计存储过程规范(sql server)
- POJ2817——WordStack
- Project Euler - 13
- JAVA NIO之浅谈内存映射文件原理与DirectMemory
- 给MessageBean注入参数值,为Bean注入集合参数值。
- Nginx + Apache 的优化例子一则
- UiAutomator初识-在android上进行UiAutomator 测试基本步骤