【输出】
掉进黑洞的步数
输入
1234
输出
3
2、进制转换(程序文件名conver.c/conver.cpp)
【问题描述】
任给一个十进制整数n,及正整数m(m<=16且m≠10),将n转换成m进制并输出。
【输入】
一行,两个整数n,m(0≤n≤500000,2≤m≤16,且m≠10),中间用一个空格隔开,其中n表示十进制数。
【输出】
转换后的数
【输入输出样例】
输入
2558
输出
377
3、分数线划定(程序文件名score.c/score.cpp)
【问题描述】
公务员选拔工作正在A市如火如荼的进行。
为了选拔优秀人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。
面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
【输入】
第一行,两个整数n,m(5≤n≤5000,3≤m≤n),中间用一个空格隔开,其中n表示报名参加笔试的选手总数,m表示计划录取的人数。
输入数据保证m*150%向下取整后小于等于n。
第二行到第n+1行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000≤k≤9999)和该选手的笔试成绩s(1≤s≤100)。
数据保证选手的报名号各不相同。
【输出】
第一行,有两个整数,用一个空格隔开,第一个整数表示面试分数线;第二个整数为进入面试的选手的实际人数。
从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
【输入输出样例】
输入
63
100090
323988
239095
723184
100595
100188
输出
885
100595
239095
100090
100188
323988
【样例说明】
m*150%=3*150%=4.5,向下取整后为4。
保证4个人进入面试的分数线为88,但因为88有重分,所以所有成绩大于等于88的选手都可以进入面试,故最终有5个人进入面试。
4、生日礼物(gift.c/gift.cpp)
【问题描述】
小新今天过生日,他妈妈带他到一家购物中心,他妈妈告诉他他今天可以在这家商店选购3件礼物,但这3件礼物必须满足条件:
后面礼物的价格不得高于前面礼物的价格,如有5件商品价格分别是12,11,8,9,10,则小新挑选礼物方案只能是(12,11,8)、(12,11,9)、(12,11,10)这三种方案中的一种,小新对挑选礼物的方案很感兴趣,请编程计算挑选礼物的方案数。
【输入】
第一行,一个整数n(n≤1000),表示待选商品的总数。
第二行n个整数,用空格隔开,分别表示每件商品的价格(每件商品的价格≤10000)。
【输出】
共一行,包含1个整数,表示挑选礼物的方案数。
【输入输出样例】
输入
5
12118910
输出
3
5、资金预算(budget.c/budget.cpp)
【问题描述】
小新的亲戚开了一家建材批发部,近来由于价格不稳定,故需要制定按月执行的仓储计划,该批发部有n个供货月份,每个月仓储预算、商品价格预算、客户需求量分别为Pi,Si,Di,,每月客户需求必须得到保证。
当然,也可以在价格适当时进行囤货,即用仓库所储备的商品供货。
若存货不足,就要购买商品供货,如某月要购货,则该月要加上一笔购货预算资金Ri。
例如,有2个预算月份,P1,S1,D1,R1分别为0,10,100,10;P2,S2,D2,R2分别为0,100,100,10;则方案1:
第一个月买够D1的货,第二个月买够D2的货,预算等于
(D1×S1+R1)+(D2×S2+R2)=(100×10+10)+(100×100+10)=11020。
方案2:
第一个月买够2个月的商品,第二个月不用买货,可用囤积的商品供货,但需要支付第一个月的仓储费,预算等于
((D1+D2)×S1+R1)+(P1×D2)=((100+100)×10)+(0×100)=2010。
显然方案2优于方案1。
人工进行这样的预算费时费力,请你编程帮小新亲戚安排预算从而实现利润的最大化。
【输入】
输入文件第一行是整数n(1≤n≤20),表示有n个月份;接着有n行,每行4个数据,分别表示Pi,Si,Di,Ri,即仓储费用,商品价格预算,客户需求量及购货预算。
其中1≤i≤n,0≤Pi,Si,Ri≤100000;,∑Di≤500。
【输出】
仅1行,数据是最小总预算。
样例1:
【输入1】
2
01010010
010010010
【输出1】
2010
样例2:
【输入2】
2
1001010010
010010010
【输出2】
11020
6、热带鱼(fish.c/fish.cpp)
【问题描述】
一个晴朗的星期天,小新在商场看见美丽的热带鱼,五彩斑斓的热带鱼在碧绿的水草映照下格外绚丽夺目,大大小小的鱼儿有的慢悠悠的散着步,有的疾驰如闪电,小新不禁被美丽的鱼儿所吸引,他非常想将这些美丽的小精灵们全买回家,但鱼儿的种类太多了,所以小新决定每种鱼最多只买1条,由于鱼儿间会相互争斗蚕食,故有些鱼儿是不能同时买回家的,小新想买尽可能多的鱼,但他身上的钱有限,只能在资金许可的范围内买鱼,怎么办?
请你设计一个最佳方案,在资金许可的范围选择花费资金最多的一种买鱼方案。
程序运行时间10s内。
【输入】
文件的第一行为两个正整数m(m≤1000)与n(n≤30),分别表示资金与鱼的种类;以下行,每行2个正整数,分别表示某种鱼的编号(编号≤30)及价格(价格≤10000);接着,每行2个正整数p与q,表示编号p与编号q的鱼不能共处,当p、q均等于0时,表示输入文件结束。
【输出】
输出文件为2行,分别为2个正整数,第一行整数表示所买鱼的条数,第二行整数表示所花费的资金。
样例1:
【输入1】
153
130
239
318
13
00
【输出1】
0
0
样例2:
【输入2】
1806
680
560
440
330
250
120
14
35
56
00
【输出2】
4
180
7、电脑游戏(game.c/game.cpp)
【问题描述】
小新正在玩一个简单的电脑游戏。
游戏中有一条环形马路,马路上有n个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。
小新以某个机器人工厂为起点,按顺时针顺序依次将这n个机器人工厂编号为1~n,因为马路是环形的,所以第n个机器人工厂和第1个机器人工厂是由一段马路连接在一起的。
小新将连接机器人工厂的这n段马路也编号为1~n,并规定第i段马路连接第i个机器人工厂和第i+1个机器人工厂(1≤i≤n-1),第n段马路连接第n个机器人工厂和第1个机器人工厂。
游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。
小新需要机器人的帮助才能收集到马路上的金币。
所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在i(1≤i≤n)号机器人工厂购买了一个机器人,这个机器人会从i号机器人工厂开始,顺时针在马路上行走,第一次行走会经过i号马路,到达i+1号机器人工厂(如果i=n,机器人会到达第1个机器人工厂),并将i号马路上的所有金币收集给小新。
游戏中,环形马路上不能同时存在2个或者2个以上的机器人,并且每个机器人最多能够在环形马路上行走p次。
小新购买机器人的同时,需要给这个机器人设定行走次数,行走次数可以为1~p之间的任意整数。
当马路上的机器人行走完规定的次数之后会自动消失,小新必须立刻在任意一个机器人工厂中购买一个新的机器人,并给新的机器人设定新的行走次数。
以下是游戏的一些补充说明:
1.游戏从小新第一次购买机器人开始计时。
2.购买机器人和设定机器人的行走次数是瞬间完成的,不需要花费时间。
3.购买机器人和机器人行走是两个独立的过程,机器人行走时不能购买机器人,购买完机器人并且设定机器人行走次数之后机器人才能行走。
4.在同一个机器人工厂购买机器人的花费是相同的,但是在不同机器人工厂购买机器人的花费不一定相同。
5.购买机器人花费的金币,在游戏结束时再从小新收集的金币中扣除,所以在游戏过程中小新不用担心因金币不足,无法购买机器人而导致游戏无法进行。
也因为如此,游戏结束后,收集的金币数量可能为负。
现在已知每段马路上每个单位时间内出现的金币数量和在每个机器人工厂购买机器人需要的花费,请你告诉小新,经过m个单位时间后,扣除购买机器人的花费,小新最多能收集到多少金币。
【输入】
第一行3个正整数,n,m,p,意义如题目所述。
接下来的n行,每行有m个正整数,每两个整数之间用一个空格隔开,其中第i行描述了i号马路上每个单位时间内出现的金币数量(1≤金币数量≤100),即第i行的第j(1≤j≤m)个数表示第j个单位时间内i号马路上出现的金币数量。
最后一行,有n个整数,每两个整数之间用一个空格隔开,其中第i个数表示在i号机器人工厂购买机器人需要花费的金币数量(1≤金币数量≤100)。
【输出】
共一行,包含1个整数,表示在m个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。
【输入样例】
232
123
234
12
【输出样例】
5
【数据范围】
对于40%的数据,2≤n≤40,1≤m≤40。
对于90%的数据,2≤n≤200,1≤m≤200。
对于100%的数据,2≤n≤1000,1≤m≤1000,1≤p≤m。
7、电脑游戏(game.c/game.cpp)
【问题描述】
小新正在玩一个简单的电脑游戏。
游戏中有一条环形马路,马路上有n个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。
小新以某个机器人工厂为起点,按顺时针顺序依次将这n个机器人工厂编号为1~n,因为马路是环形的,所以第n个机器人工厂和第1个机器人工厂是由一段马路连接在一起的。
小新将连接机器人工厂的这n段马路也编号为1~n,并规定第i段马路连接第i个机器人工厂和第i+1个机器人工厂(1≤i≤n-1),第n段马路连接第n个机器人工厂和第1个机器人工厂。
游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。
小新需要机器人的帮助才能收集到马路上的金币。
所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在i(1≤i≤n)号机器人工厂购买了一个机器人,这个机器人会从i号机器人工厂开始,顺时针在马路上行走,第一次行走会经过i号马路,到达i+1号机器人工厂(如果i=n,机器人会到达第1个机器人工厂),并将i号马路上的所有金币收集给小新。
游戏中,环形马路上不能同时存在2个或者2个以上的机器人,并且每个机器人最多能够在环形马路上行走p次。
小新购买机器人的同时,需要给这个机器人设定行走次数,行走次数可以为1~p之间的任意整数。
当马路上的机器人行走完规定的次数之后会自动消失,小新必须立刻在任意一个机器人工厂中购买一个新的机器人,并给新的机器人设定新的行走次数。
以下是游戏的一些补充说明:
1.游戏从小新第一次购买机器人开始计时。
2.购买机器人和设定机器人的行走次数是瞬间完成的,不需要花费时间。
3.购买机器人和机器人行走是两个独立的过程,机器人行走时不能购买机器人,购买完机器人并且设定机器人行走次数之后机器人才能行走。
4.在同一个机器人工厂购买机器人的花费是相同的,但是在不同机器人工厂购买机器人的花费不一定相同。
5.购买机器人花费的金币,在游戏结束时再从小新收集的金币中扣除,所以在游戏过程中小新不用担心因金币不足,无法购买机器人而导致游戏无法进行。
也因为如此,游戏结束后,收集的金币数量可能为负。
现在已知每段马路上每个单位时间内出现的金币数量和在每个机器人工厂购买机器人需要的花费,请你告诉小新,经过m个单位时间后,扣除购买机器人的花费,小新最多能收集到多少金币。
【输入】
第一行3个正整数,n,m,p,意义如题目所述。
接下来的n行,每行有m个正整数,每两个整数之间用一个空格隔开,其中第i行描述了i号马路上每个单位时间内出现的金币数量(1≤金币数量≤100),即第i行的第j(1≤j≤m)个数表示第j个单位时间内i号马路上出现的金币数量。
最后一行,有n个整数,每两个整数之间用一个空格隔开,其中第i个数表示在i号机器人工厂购买机器人需要花费的金币数量(1≤金币数量≤100)。
【输出】
共一行,包含1个整数,表示在m个单位时间内,扣除购买机器人花费的金币之后,小新最多能收集到多少金币。
【输入样例】
232
123
234
12
【输出样例】
5
【数据范围】
对于40%的数据,2≤n≤40,1≤m≤40。
对于90%的数据,2≤n≤200,1≤m≤200。
对于100%的数据,2≤n≤1000,1≤m≤1000,1≤p≤m。
答案
第一题
include
intx=1;
voidmain()
{
inta;
voidfun(inta);
printf("请输入一个四位数:
");
scanf("%d",&a);
fun(a);
printf("%d\n",x);
}
voidfun(inta)
{inti,j,m,n,s[4],t;
s[0]=a/1000,s[1]=a/100%10,s[2]=a/10%10,s[3]=a%10;
for(i=0;i<3;i++)
{for(j=i+1;j<4;j++)
{if(s[i]
t=s[i],s[i]=s[j],s[j]=t;}
}
m=1000*s[0]+100*s[1]+10*s[2]+s[3];
n=1000*s[3]+100*s[2]+10*s[1]+s[0];
if(m-n!
=6174&&x<=7)
{x++,fun(m-n);}
}
第二题
#include
voidmain()
{
intm,n,k=0,i,j,a[20];
printf("请输入十进制数字及转换进制用空格分开:
");
scanf("%d%d",&m,&n);
for(k;m/n!
=0;k++)
{
a[k]=m%n;
m=m/n;}
a[k]=m;
for(j=0;j<=k;j++)
{switch(a[j])
{case10:
a[j]='a';
case11:
a[j]='b';
case12:
a[j]='c';
case13:
a[j]='d';
case14:
a[j]='e';
case15:
a[j]='f';}
}
for(i=k;i>=0;i--)
{if(a[i]<97)printf("%d",a[i]);
elseprintf("%c",a[i]);}
printf("\n");
}
第三题
#include
voidmain()
{
intm,n,i,a[5000],b[5000],f,j,k,z,l,t1,t2,s,d,v,p,g;
printf("Pleaseinputthetotalnumberandenrollmentin:
");
scanf("%d%d",&n,&m);
for(i=0;i{
printf("Pleaseenterthe%dnumberandgrade",i+1);
scanf("%d%d",&a[i],&b[i]);
printf("\n");
}
for(z=0;zfor(l=z+1;l{if(b[z]
}
for(k=0;kfor(v=k+1;v{if(b[k]==b[v]&&a[k]>a[v])t1=b[k],b[k]=b[v],b[v]=t1,t2=a[k],a[k]=a[v],a[v]=t2;}
f=m*1.5;
for(g=f;g<=n;g++)
if(b[f-1]==b[f])f++;
printf("interviewscoresfortheactualinterviewnumberis%d%d\n",b[f-1],f);
for(s=0;sprintf("%d%d\n",a[s],b[s]);
}
第四题
#include
voidmain()
{
inti,j,k,n,m=0,l=0,a[20],t1,t2,t;
printf("请输入待选商品总数:
");
scanf("%d",&n);
printf("\n");
printf("请输入各待选商品的价格");
while(l{scanf("%d",&a[l]);
l++;
}
printf("\n");
for(i=0;i{for(j=0;j=i;j++)
for(k=0;k=j&&k!
=i;k++)
if(a[i]>=a[j]&&a[j]>=a[k])m++;
}
printf("%d\n",m);
}