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
3 3
1 2 4
0 0
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
3 3 -4 2
4 0 1 2 -3
0
-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");
}
}