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; }数据的交换输出 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"); } }字符串统计 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); } }母牛的故事 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; }[分析] 别问我为什么突然有页面了。 这题做的特别窝囊,原本只要输入什么输出什么,遇到大的就插入输出,但不知道为什么错了两边,嗯,很生气,一个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"); } }[分析] 随手写了个快速排序。(装一波)然后写个绝对值扔进去。水。快速排序当模板背吧,觉得这个是基本功。虽然有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"); } }