7-1 评优
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
某班正在评优,规则规定,一个班最多只能推荐2名同学。经过几轮评比后还有3位同学有资格。最后一轮的规则非常简单,就是比这三个同学的加权成绩。成绩好的2位同学可以获得推荐资格。现请你写一段程序,计算这两个成绩好的同学的加权成绩的平均值。
输入格式:
只有一行,为三个用空格分隔的正的浮点数,依次代表三个人的加权成绩。测试用例保证所有浮点数都可以用float存储,也建议用float存储。
输出格式:
也只有一行,为一个浮点数,代表成绩高的两名同学的平均成绩(保留一位小数)。
输入样例:
95.6 93.8 90.7
输出样例:
94.7
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
int main()
{
float a, b, c;
scanf("%f %f %f", &a, &b, &c);
float min, res;
min = a<=b ? a : b;
min = min<=c ? min : c;
res = (a + b + c - min)/2;
printf("%.1f", res);
return 0;
}
7-2 二人争产问题
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
塔木德二人争产问题是指当两个人对同一财产有争议时,如何公平地分配该财产的问题。塔木德分配法的核心思想是“争大衣原则”,其中前两条原则为:一、只分配有争议的部分,无争议的部分可以直接获得;二、宣称拥有更多财产权利一方最终所得不少于宣称拥有较少权利一方。比如:债权人甲与乙分别要求获得的财产为 c1、 c2(不妨设 c1≤ c2),可供分配的总财产为 E(假设E<=c1+c2)。甲与乙分到的财产记为 x1、 x2。按照 R . Aumann 和 M . Maschler 论文中的分配方法:当 E 不大时(标准为 E ≤ c1)先两人平分;然后增长的部分只分给乙;一直到乙拿到一定份额时(标准为乙与甲的损失相同),总财产继续增长的部分由两人平分。比如,甲乙债权人的债权分别为100和200,当待分配财产为100时,二人各分得50;当待分配财产为180时,甲得50,乙得130;当待分配财产为240时,甲得70,乙得170。
请根据此算法写一段程序来计算甲乙二人分别应分得多少财产。
输入格式:
只有一行,为三个用空格分隔的整数,依次代表 c1、 c2和E。测试用例保证c1≤ c2,E<=c1+c2且所有整数均可以用int存储。
输出格式:
也只有一行,为用空格分隔的两个整数,依次代表x1和x2。
输入样例:
100 200 100
输出样例:
50 50
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
int main()
{
int E, c1,c2;
scanf("%d %d %d", &c1, &c2, &E);
int x1, x2;
if(E<=c1){
x1 = E/2;
x2 = E/2;
}else if(E<=c2){
x2 = E - c1/2;
x1 = c1/2;
}else{
E = E - c2;
x2 = c2 - c1/2 + E/2;
x1 = c1/2 + E/2;
}
printf("%d %d",x1,x2);
return 0;
}
7-3 奇偶平均值
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
现有一个由n(1<n<100)个整数组成数列,这n个整数的绝对值都小于100。请你写一段程序分别求出这n个整数中奇数的平均值和偶数的平均值。
输入格式:
共两行,第一行为一个整数,代表n,第二行为n个用空格分隔的整数,代表待处理数列。测试用例保证合法。
输出格式:
只有一行,为两个一个空格分隔的浮点数,依次代表输入数列中所有奇数的平均值和所有偶数的平均值(保留1为小数,数据类型建议用float)。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
输出样例:
5.0 6.0
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d", &n);
int arr[100];
for(int i = 0; i<n; i++){
scanf("%d", &arr[i]);
}
int sum_1 = 0, sum_2 = 0;
int num_1 = 0, num_2 = 0;
for(int i=0; i<n; i++){
if(abs(arr[i])%2==1){
sum_1+= arr[i];
num_1++;
}else{
sum_2+= arr[i];
num_2++;
}
}
float res_1=(float)sum_1/num_1;
float res_2=(float)sum_2/num_2;
printf("%.1f %.1f", res_1, res_2);
return 0;
}
7-4 非字母数字计数
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
现有若干字符,包括大小写字母,数字,空格,其他字符等等。请按输入顺序输出其中的字母及数字以及其他被忽略的字符的个数。
输入格式:
只有一行,为一串任意字符,以’\n’结尾。
输出格式:
共两行,第一行为按输入顺序输出其中的字母和数字;第二行为一个整数,代表被忽略的非字母数字的个数。
测试用例保证输入合法。
输入样例:
gj&*(!@J@1231we../789)
输出样例:
gjJ1231we789
10
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
int main()
{
char ch;
int count = 0;
while((ch = getchar()) != '\n')
{
if((ch >= 'a'&&ch <= 'z')||(ch >= 'A'&&ch <= 'Z')||(ch >= '0'&&ch <= '9'))
printf("%c", ch);
else
count++;
}
printf("\n%d\n", count);
return 0;
}
7-5 打印图形五
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
用'-'(减号)、'+'(加号)、'*'星号和空格打印方格。
输入格式:
只有一行,为用空格分隔的两个整数l,c(0<l,c<10)。其中l和c分别代表格子的行数和列数。请看输入样例。
输出格式:
每组测试用例输出一组。请看输出样例。
输入样例一:
2 3
输出样例一:
*--+--*--+--*--+--*
* * * * * * *
*--+--*--+--*--+--*
* * * * * * *
*--+--*--+--*--+--*
* * * * * * *
*--+--*--+--*--+--*
* * * * * * *
*--+--*--+--*--+--*
输入样例二:
3 2
输出样例二:
*--+--*--+--*
* * * * *
*--+--*--+--*
* * * * *
*--+--*--+--*
* * * * *
*--+--*--+--*
* * * * *
*--+--*--+--*
* * * * *
*--+--*--+--*
* * * * *
*--+--*--+--*
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
void zero_two_end(int n, int m)
{
printf("*--+--");
if(n == m - 1)
printf("*\n");
}
void one_three(int n, int m)
{
printf("* * ");
if(n == m - 1)
printf("*\n");
}
int main()
{
int i, j;
scanf("%d %d", &i, &j);
for(int a = 0; a < 4*i + 1; a++)
{
for(int b = 0; b < j; b++)
{
if(a%4 == 0||a%4 == 2||a == 4*i)
zero_two_end(b, j);
if(a%4 == 1|| a%4 == 3)
one_three(b, j);
}
}
return 0;
}