第二场个人训练赛(水题合集)

xiaoxiao2021-02-28  13

A - 偶数求和 HDU - 2015

Problem 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 <cstdio> int main() { int n, m; while(scanf("%d%d", &n, &m) != EOF) { int sum=0, ai=2, count=0, i; for(i=1; i<=n; i++) { sum += ai; ai += 2; if( i % m == 0) { count++; if(count != 1) printf(" "); printf("%d", sum / m); sum = 0; } } if(n % m == 0) printf("\n"); else printf(" %d\n", sum / (n % m)); } return 0; }

B - 数据的交换输出 HDU - 2016

数据的交换输出 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 105432 Accepted Submission(s): 39428

Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。

Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。

Output 对于每组输入数据,输出交换后的数列,每组输出占一行。

Sample Input 4 2 1 3 4 5 5 4 3 2 1 0

Sample Output 1 2 3 4 1 4 3 2 5

[分析] 水。

[代码]

#include<cstdio> #include<cstring> int main() { int a[105]; int n; while (scanf("%d", &n) != EOF) { if (!n)break; int min; scanf("%d", &a[0]); min = 0; for (int i = 1; i < n; i++) { scanf("%d", &a[i]); if (a[i] < a[min])min = i;//取最小 } int c = a[min];/// a[min] = a[0];/// a[0] = c;///交换 printf("%d", a[0]); for (int i = 1; i < n; i++) { printf(" %d", a[i]);//输出 } printf("\n"); } }

C - 字符串统计 HDU - 2017

字符串统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 82603 Accepted Submission(s): 45409

Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数。

Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。

Output 对于每个测试实例,输出该串中数值的个数,每个输出占一行。

Sample Input 2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf

Sample Output 6 9

[分析] 水。

[代码]

#include<cstdio> #include<cstring> int main() { int n; char a[1000]; scanf("%d", &n); while (n--) { scanf("%s", a); int len = strlen(a); int ans = 0; for (int i = 0; i < len; i++) { if (a[i] >= '0'&&a[i] <= '9')ans++; } printf("%d\n", ans); } }

D - 母牛的故事 HDU - 2018

母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 83962 Accepted Submission(s): 41742

Problem Description 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0

#include <cstdio> using namespace std; int main() { int n, i; int year1, year2, year3, yearn; while (scanf("%d", &n) != EOF) { if (!n)break; year1 = 1; year2 = 2; year3 = 3; if (n == 1 || n == 2 || n == 3)printf("%d\n", n); else { for (i = 4; i <= n; i++) { yearn = year3 + year1; year1 = year2; //year1前3年 year2 = year3; //year2前2年 year3 = yearn; //year3前1年 } printf("%d\n", yearn); } } return 0; }

E - 数列有序! HDU - 2019

数列有序!

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 90149    Accepted Submission(s): 37926 Problem Description 有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。   Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。   Output 对于每个测试实例,输出插入新的元素后的数列。   Sample Input 3 3 1 2 4 0 0   Sample Output 1 2 3 4  

[分析] 别问我为什么突然有页面了。 这题做的特别窝囊,原本只要输入什么输出什么,遇到大的就插入输出,但不知道为什么错了两边,嗯,很生气,一个sort暴力解决。

[代码]

#include<cstdio> #include<algorithm> using namespace std; int main() { int n,m,i; int a[105]; while (scanf("%d%d", &n, &m) != EOF) { if (!n && !m)break; for (i = 0; i < n; i++) { scanf("%d", &a[i]); } a[i] = m; sort(a, a + n+1); int flag = 1; for (i = 0; i <= n; i++) { if (flag)flag = 0; else { printf(" "); } printf("%d", a[i]); } printf("\n"); } }

F - 绝对值排序 HDU - 2020

绝对值排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 81503    Accepted Submission(s): 38800 Problem Description 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。   Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。   Output 对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。每个测试实例占一行。   Sample Input 3 3 -4 2 4 0 1 2 -3 0   Sample Output -4 3 2 -3 2 1 0  

[分析] 随手写了个快速排序。(装一波)然后写个绝对值扔进去。水。快速排序当模板背吧,觉得这个是基本功。虽然有sort。

[代码]

#include<cstdio> void change(int i, int j, int a[]) { int c; c = a[i]; a[i] = a[j]; a[j] = c; } int jdz(int i) { return i > 0 ? i : -i; } void qsort(int p, int q, int a[]) { int i = p, temp = a[i]; if (p<q) { for (int j = i + 1; j <= q; j++) { if (jdz(a[j]) >= jdz(temp)) { change(j, i + 1, a); i++; } } change(i, p, a); qsort(p, i - 1, a); qsort(i + 1, q, a); } } int main() { int n; int a[105]; while (scanf("%d", &n) != EOF) { if (!n)break; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } qsort(0,n-1,a); int flag = 1; for (int i = 0; i < n; i++) { if (flag) { printf("%d", a[i]); flag = 0; } else printf(" %d", a[i]); } printf("\n"); } }
转载请注明原文地址: https://www.6miu.com/read-1250357.html

最新回复(0)