acm 训练2017 03 06

来源:互联网 发布:怎么注册手机域名 编辑:程序博客网 时间:2024/05/20 18:55

训练一: 偶数求和
Description
有一个长度为n(n<=100)的数列
,该数列定义为从2开始的递增有序偶数,
现在要求你按照顺序每m个数求出一个平均值
,如果最后不足m个,则以实际数量求平均值
。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,
包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,
每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
代码一:

#include<stdio.h>#include<stdlib.h>int main(){    int n, m;    while (scanf("%d%d", &n, &m) != EOF)    {        int t = n / m;        int number = n%m == 0 ? n / m : n / m + 1;        long long *ptos = calloc(number, sizeof(long long int));        int i, j = 2, k = 1, cnt = 0;        while (t--)        {            for (i = 0; i < m; i++, k++)                *(ptos + cnt) += j*k;            *(ptos + cnt) /= m;            cnt++;        }        n %= m;        for (i = 0; i<n; i++, k++)            *(ptos + cnt) += j*k;        if (n != 0) *(ptos + cnt) /= n; //n不能为0        for (i = 0; i < number; i++)        {            if (i == number - 1) printf("%lld\n", *(ptos + i));            else printf("%lld ", *(ptos + i));        }    }    return 0;}

这里写图片描述
测试结果: 通过
训练二: 母牛的故事
Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0

#include<stdio.h>#include<stdlib.h>int main(){    int n;    int p[55] = { 0,1,2,3,4, };    while (scanf("%d", &n) != EOF, n)    {        int s1 = 1, s2 = 0;        int i,j=0,k=0;        for (i = 4; i <= n; i++)        {            p[i] = p[i - 3] + p[i - 1];        }        printf("%d\n", p[n]);    }    return 0;}

运行结果:
这里写图片描述
测试结果: 通过

0 0