max=a[i];
}
printf("%d",max);
}
第四题
#include
doublef(int);
voidmain()
{
intn;
scanf("%d",&n);
printf("%.8f",f(n));
}
doublef(intn)
{
inti;
doubleresult=0.0;
for(i=1;i<=n;i++)
result=result+(double)1/i;
returnresult;
}
5题目标题:
汽水瓶(谌海军)
题目描述:
有这样一道智力题:
“某商店规定:
三个空汽水瓶可以换一瓶汽水。
小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?
”答案是5瓶,
方法如下:
先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。
然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
输入描述:
输入为一个正整数n(1<=n<=100),表示空汽水瓶个数。
#include
voidmain()
{intn,m=0,sum=0,i=0;
scanf("%d",&n);
while(n>=3)
{m=n/3;
n=n-2*m;
sum=sum+m;
}
if(n=2)
sum++;
elseif(n<2)
sum=sum+i;
printf("%d",sum);
}
6题目标题:
栽树(彭玉旭)
题目描述:
在某食堂门前有n(n<200)个树坑,编号是从0~n-1,开始时是没有树的。
每个月,园林工人都会在编号a~b(0<=a<=b<=n-1)之间栽树(包括a,b),如果树坑原来有树,则不需要从新栽树。
请计算4个月后,食堂门前总共有多少棵树。
输入描述:
第一个整数是n,接下来有8个整数,分别为每个月栽树的编号。
输出描述描述:
食堂门前树的总数。
第六题
#include
voidmain()
{
intn;
inta1,b1,a2,b2,a3,b3,a4,b4;
intresult=0;
inti;
scanf("%d",&n);
scanf("%d%d",&a1,&b1);
scanf("%d%d",&a2,&b2);
scanf("%d%d",&a3,&b3);
scanf("%d%d",&a4,&b4);
for(i=0;i{
if(i>=a1&&i<=b1)
result++;
elseif(i>=a2&&i<=b2)
result++;
elseif(i>=a3&&i<=b3)
result++;
elseif(i>=a4&&i<=b4)
result++;
}
printf("%d",result);
}
7题目标题:
密码破译(闫博钊)
题目描述:
某组织欲破获一个外星人的密码,密码由一定长度的字串组成。
此组织拥有一些破译此密码的长度不同的钥匙,若两个钥匙的长度之和恰好为此密码的长度,则此密码被成功破译。
现在就请你编程找出能破译此密码的两个钥匙。
输入描述:
输入第一行为钥匙的个数N(1≤N≤5000)
输入第二行为密码的长度
以下N行为每个钥匙的长度
输出描述描述:
若无法找到破译此密码的钥匙,则输出仅1行0。
若找到两把破译的钥匙,则输出有两行,分别为两把钥匙的编号。
若有多种破译方案,则只输出一种即可。
#include
voidmain()
{
intn,s[5000],l,i,j,sign=1,m=0;
scanf("%d",&n);
scanf("%d",&l);
for(i=0;i scanf("%d",&s[i]);
for(i=0;i {
if(sign==0)break;
for(j=i+1;j if(s[i]+s[j]==l)
{printf("%d\n%d",i+1,j+1);sign=0;break;}}
if(sign)printf("%d",m);
}
#include
voidmain()
{intm,n,sum,i,j,a[5000];
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;ifor(j=i+1;j<=n;j++)
{sum=a[i]+a[j];
p=sum-m;
if(p==0)
printf("%d\n%d",i,j);
}
}
#include
voidmain()
{
intN,length;
inti,j,key[5000];
intnum1,num2,t;
scanf("%d",&N);
scanf("%d",&length);
for(i=0;i scanf("%d",&key[i]);
t=1;
for(i=0;i for(j=i+1;j {
if(key[i]+key[j]==length)
{
num1=i+1;
num2=j+1;
t=0;
break;
}
}
if(t==1)
printf("0");
else
printf("%d\n%d",num1,num2);
}
9题目标题:
基因编码(闫博钊)
题目描述:
小可可选修了基础生物基因学。
教授告诉大家SuperSamuel星球上Kitty猫的基因的长度都是2的正整数次幂2k(k≤8),全是由两种不同的基因单元组成的。
这两种不同的基因单元分别记成0和1,于是Kitty猫的基因可以写成一个01串表达式S。
为了便于分析和降低数据存储量,教授发明了ABC编码规则。
该编码规则是不断地按照
A(若S串全是0)
T(S)= B(若S串全是1)
CT(S1)T(S2) (否则把S串分成两个等长的子串S1和S2)
对Kitty猫基因01串表达式S进行改写,直至最终被改写成只含有字符“A”、“B”、“C”的符号串。
例如T(01001011)
=CT(0100)T(1011)
=CCT(01)T(00)CT(10)T(11)
=CCCT(0)T
(1)ACCT
(1)T(0)B
=CCCABACCBAB
请你编写程序帮助小可可求出Kitty猫基因的ABC编码以协助教授开展科研工作。
输入描述:
测试数据以一行的形式存放Kitty猫基因的01串表达式,字符串长度不超过500
输出描述描述:
对应测试数据,以一行的形式输出这个Kitty猫基因的ABC编码。
#include
#include
voidf(chara[],intbegin,intend);
intmain()
{
chara[500];
intlength;
gets(a);
length=strlen(a);
f(a,0,length);
return0;
}
voidf(chara[],intbegin,intend)
{
intnum_A=0,num_B=0;
inti;
for(i=begin;i{
if(a[i]=='0')
num_A++;
elseif(a[i]=='1')
num_B++;
}
if(num_A==end-begin)
printf("A");
elseif(num_B==end-begin)
printf("B");
else
{
printf("C");
f(a,begin,(end+begin)/2);
f(a,(end+begin)/2,end);
}
}
10题目标题:
最大公约数(闫博钊)
题目描述:
输入两个整数a,b(1≤a,b≤100000),请编写程序求出他们的最大公约数。
输入描述:
输入两个整数ab,用空格隔开
输出描述描述:
输出对应a,b的最大公约数
#include
voidmain()
{longa,b,c,t;
scanf("%ld%ld",&a,&b);
if(a
{
t=a;
a=b;
b=t;
}
while(b!
=0)
{
c=a%b;
a=b;
b=c;
}
printf("%ld",a);
}
11题目标题:
大数相加(彭玉旭)
题目描述:
a+b这个程序大家都会做,但是如果a和b都比较大时该怎么办呢。
其实我们可以把输入一个比较大的数用字符串表示,模拟人工加法方式。
如123+23,一个字符串是123另外一个字符串是23,从字符串的最后开始加,得到146.结果最大是两个字符串最长的那个值加1。
现在请你计算两个不