第十五届现场编程比赛初赛(普及组)

来源:互联网 发布:网络交友有利还是有弊 编辑:程序博客网 时间: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:

1

1 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>

如果不确定猴子的总数N,那么解法如下,能理解的理解,不能理解了解即可。本题学到链表部分比较容易解决。
这其实是经典的约瑟夫环问题,有兴趣的可以百度一下约瑟夫环

数组实现:http://blog.csdn.net/sunmeng_007/article/details/8026272
数学方法:http://blog.163.com/seeker_forever/blog/static/16323893820107535243739/


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不了。请联系科协软件部部长。








0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 六个月的宝宝老长婴儿湿疹怎么办 入伍前驾照没考完退伍后过期怎么办 在电脑上玩英雄联盟没有声音怎么办 梦幻西游新区抢不到副本积分怎么办 倒车时遇上机动车碰瓷的怎么办 电瓶车相撞对方全责但不赔偿怎么办 轻微刮蹭逃逸对方想多要钱怎么办 正常开车撞伤了闯红灯的人怎么办 发现小事故要保持现场堵车怎么办 私处刮毛外面皮肤不小心弄伤怎么办 老婆骂孩子不准老公带饿小孩怎么办 结婚3年妻子不让丈夫碰怎么办 老婆出轨现在没证据他要离婚怎么办 结婚后老婆不让碰分房睡离婚怎么办 电动车调速把手变速挡坏了怎么办 路边车辆贴条了超过15天了怎么办 违停交警拍照了没贴条 照片怎么办 支付宝违章缴费罚单输错了怎么办 交警查酒驾跑了把警车撞了怎么办 禁止进入待行区的时候进入了怎么办 今天开车把72岁老太婆撞了怎么办 在这种路口遇到行人突然横穿怎么办 在左拐车道却直行了怎么办 路边简易房让拆除不想拆怎么办 英国护照的名和姓印颠倒了怎么办 加热圈功率小加不到设定温度怎么办 本田飞度05年车尾气不好怎么办 文件在lr中打开后找不到了怎么办 手机安装软件成功屏幕上没有怎么办 脸过敏发红痒怎么办用什么药膏 脸上又红又肿又痒怎么办 宝宝把皮革咬烂吃掉了怎么办 自动档皮革挡把防尘套烂了怎么办 pu包用酒精擦坏了怎么办 白色的面料被84弄黄了怎么办 要账的人赖在家不走怎么办 两塔吊的安全距离不够2米怎么办 腿上被蚊子咬后留下的黑疤怎么办 携程订的酒店酒店一直没确认怎么办 客斤的无窗挨着厨房怎么办 餐桌和墙紧挨着容易脏怎么办