当前位置:
文档之家› OpenJudge算法设计与分析习题解答
OpenJudge算法设计与分析习题解答
样例输入
45 2 3 2 1
样例输出
1 BeiJu 1 BeiJu 源代码: #include <stdio.h> #include <string.h> int b[ 222 ]; int a[ 222 ]; int n, m; int main() {
scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++ ){
}
2、比赛排名
描述
5 名运动员参加 100 米赛跑,各自对比赛结果进行了预测: A 说:E 是第 1 名。 B 说:我是第 2 名。 C 说:A 肯定垫底。 D 说:C 肯定拿不了第 1 名。 E 说:D 应该是第 1 名。 比赛结束后发现,只有获第 1 名和第 2 名的选手猜对了,E 不是第 2 名和第 3 名,没有 出现名次并列的情况。 请编程判断 5 位选手各是第几名。
int A=n,B=n/2,C=n/5;
for(i=0;i<=C;i++){
for(j=0;j<=B;j++){
for(k=0;k<=A;k++){
if(i*5+j*2+k*1==n){
printf("%03d%12d%12d%12d\n",t,k,j,i);
t++;
}
}
}
}
getchar();
return 0;
输入
无
输出
输出要求:按 ABCDE 的顺序输出 5 行,其中第 1 行是 A 的名次,第 2 行是 B 的名次, 第 3 行是 C 的名次,第 4 行是 D 的名次,第 5 行是 E 的名次。
样例输入
样例输出
源代码: #include<stdio.h>
int main() {
printf("5\n"); printf("2\n"); printf("1\n"); printf("3\n"); printf("4\n"); return 0;
scanf("%d", &a[ i ]); b[ a[ i ] ]++; } for( int i = 1; i <= n; i++ ){ if( b[ a[ i ] ] == 1 )
printf("BeiJu\n"); else if( b[ a[ i ]] >= 2 )
printf("%d\n", b[ a[ i ]] - 1 ); } return 0; }
输入
无
输出
打印出四人的姓氏的首字母(小写)和体重数(每人一行,首字母和体重数之间用空格隔开)。
样例输入
无
样例输出
z 10 q 20 s 30 l 40 (以上输出仅用于说明格式) #include<stdio.h> #include<stdlib.h> int main(){
1、硬币面值组合
描述
使用 1 角、2 角、5 角硬币组成 n 角钱。 设 1 角、2 角、5 角的硬币各用了 a、b、c 个,列出所有可能的 a, b, c 组合。 输出顺序为:先按 c 的值从小到大,若 c 相同则按 b 的值从小到大。
输入
一个整数 n(1 <= n <= 100),代表需要组成的钱的角数。
样例输入
20
样例输出
5 10 源代码: #include <stdio.h> int main() { int n; scanf("%d",&n); if(n % 4== 0) printf("%d %d",n/4,n/2); else if(n % 4!= 0&&n % 2== 0) printf("%d %d",n/4 +1, n/2); else printf("0 0"); return 0; }
输出
输出有若干行,每行的形式为: iabc
第 1 列 i 代表当前行数(行数从 001 开始,固定 3 个字符宽度,宽度不足 3 的用 0 填充), 后面 3 列 a, b, c 分别代表 1 角、2 角、5 角硬币的个数(每个数字固定 12 个字符宽度, 宽度不足的在左边填充空格)。
样例输入
10
样例输出
5、称体重
描述
、钱、、四个人中既有大人也有小孩,给他们称体重时发现,他们每个人的体重都不一样, 且体重(单位:公斤)恰好是 10 的整数倍,且他们的体重都不高 于 50 公斤,已知、钱 两人的体重之和恰好等于、两人的体重之和;、两人的体重之和大于、钱两人的体重之和, 并且、俩人的体重之和还小于钱的体重。请编写一个程序,按照体重从小到大的顺序,打印 出四人的姓氏的首字母和体重数。
输入
第一行两个整数 N,M,2 <= N ,M<= 200。接下来有 N 行,第 i(i = 1,2,…,N)行每一 行有一个数,表示读者 i-1 最喜欢的图书的编号 P(1<=P<=M)
输出
包括 N 行,每行一个数,第 i 行的数表示读者 i 有几个潜在朋友。如果 i 和任何人都没有共 同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
001
10
0
0
002
8
1
0
003
6
2
0
004
4
3
0
005
2
4
0
006
0
5
0
007
5
0
1
008
3
1
009
1
2
1
010
0
0
2
源代码:
#include<stdio.h>
#include<stdlib.h>
int main(){
int t=1;
int i,j,k;
int n;
scanf("%d",&n);
}
3、鸡兔同笼
描述
一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。已经知道了笼子 里面脚的总数 a,问笼子里面至少有多少只动物,至多有多少只动物。
输入
一行,一个正整数 a (a < 32768)。
输出
一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一 个空格分开。 如果没有满足要求的答案,则输出两个 0,中间用一个空格分开。
4、谁是你的潜在朋友
描述
“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着 许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的 是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜 在的朋友。 首先你对借阅记录进行了一番整理,把 N 个读者依次编号为 1,2,…,N,把 M 本书依次编 号为 1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在 朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。