总时间限制: 1000ms 内存限制: 65536kB
描述
已知一个已经从小到大排序的数组,这个数组的一个平台(Plateau)就是连续的一串值相同的元素,并且这一串元素不能再延伸。例如,在 1,2,2,3,3,3,4,5,5,6中1,2-2,3-3-3,4,5-5,6都是平台。试编写一个程序,接收一个数组,把这个数组最长的平台找出 来。在上面的例子中3-3-3就是最长的平台。
输入
第一行有一个整数n,为数组元素的个数(若n=0,表示测试数据结尾。)
输出
输出最长平台的长度。
样例输入
10
1 2 2 3 3 3 4 5 5 6
5
1 1 1 2 7
0
样例输出
3
3
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main()
{
int n,count,max,p[N],j,i;
do
{
scanf("%d",&n);
count=1;
max=1;
for(i=0; i<n; i++)
scanf("%d",&p[i]);
for(i=1; i<n; i++)
{
if(p[i]==p[i-1])
{
count++;
if(max<count) //每次都要更新max
max=count;
}
else
count=1; //表示重新计数
}
if(n!=0) printf("%d\n",max);
}
while(n!=0);
return 0;
}
6:称体重
总时间限制: 1000ms 内存限制: 65536kB
描述
赵、钱、孙、李四个人中既有大人也有小孩,给他们称体重时发现,他们每个人的体重都不一样,且体重(单位:公斤)恰好是10的整数倍,且他们的体重都不高 于50公斤,已知赵、钱两人的体重之和恰好等于孙、李两人的体重之和; 赵、李两人的体重之和大于孙、钱两人的体重之和,并且赵、孙俩人的体重之和还小于钱的体重。请编写一个程序,按照由大到小的顺序,打印出四人的姓氏的首字 母和体重数(中间用空格隔开,每人一行)。
输入
无
输出
打印出四人的姓氏的首字母和体重数(中间用空格隔开,每人一行)。
样例输入
无
样例输出
z 10
q 20
s 30
l 40
(以上输出仅用于说明格式)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int z,q,s,l;
for(z=10;z<51;z+=10) //穷举
for(q=10;q<51;q+=10)
for(s=10;s<51;s+=10)
for(l=10;l<51;l+=10)
{
if(((z+q)==(s+l))&&((z+l)>(s+q))&&((z+s)<q))
printf("l %d\nq %d\nz %d\ns %d",l,q,z,s);
}
return 0;
}
4:完美立方
总时间限制: 1000ms 内存限制: 65536kB
描述
a的立方 = b的立方 + c的立方 + d的立方为完美立方等式。例如12的立方 = 6的立方 + 8的立方 + 10的立方 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a的立方 = b的立方 + c的立方 + d的立方,其中a,b,c,d 大于 1, 小于等于N。
输入
正整数N (N≤100)
输出
每行输出一个完美立方,按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则依次按照b、c、d进行非降升序排列输出,即b值小的先输出、然后c值小的先输出、然后d值小的先输出。
样例输入
24
样例输出
Cube = 6, Triple = (3,4,5)
Cube = 12, Triple = (6,8,10)
Cube = 18, Triple = (2,12,16)
Cube = 18, Triple = (9,12,15)
Cube = 19, Triple = (3,10,18)
Cube = 20, Triple = (7,14,17)
Cube = 24, Triple = (12,16,20)
来源
1543
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,d,N;
scanf("%d",&N);
for(a=2;a<=N;a++)
for(b=2;b<=N;b++)
for(c=b;c<=N;c++)
for(d=c;d<=N;d++)
{
if(a*a*a==b*b*b+c*c*c+d*d*d)
printf("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
}
return 0;
}
5:求特殊自然数
总时间限制: 1000ms 内存限制: 65536kB
描述
一个十进制自然数,它的七进制与九进制表示都是三位数,且七进制与九进制的三位数码表示顺序正好相反。编程求此自然数,并输出显示.
输入为1时,输出此自然数的十进制表达式;输入为2时,输出此自然数的七进制表达式;输入为3时,输出此自然数的九进制表达式。
输入
输入为1,2,3中的一个数。
输出
输出一行。
输出为十进制或七进制或九进制数
样例输入
1
样例输出
(特殊题目,不显示样例输出)
#include <stdio.h>
#include <stdlib.h>
#define digits 3
int main()
{
int ten ,seven[digits]= {},nine[digits]= {},temp1,temp2, count,i,n;
for(ten=1; ten<1000; ten++)
{
count=0;
temp1=ten;
temp2=ten;
do
{
seven[count]=temp1%7;
temp1=temp1/7;
nine[count]=temp2%9;
temp2=temp2/9;
count++;
if(count>2) // 题目限定为三位数
break;
}
while(temp1!=0||temp2!=0);
if(nine[2]==seven[0]&&nine[1]==seven[1]&&nine[0]==seven[2]) //判断倒序是否相等
{
scanf("%d",&n);
switch(n)
{
case 1:
printf("%d\n",ten);
break;
case 2:
printf("%d%d%d\n",seven[2],seven[1],seven[0]);
break;
case 3:
printf("%d%d%d\n",nine[2],nine[1],nine[0]);
break;
}
}
}
return 0;
}