pta 红包

派"红包"是新年的一种习俗,寓意祝愿和好运。X公司今年盈利颇丰,临近年关去银行取了充足百元现金,为全体员工准备过年红包。年末银行会准备很多连号的人民币供市民使用,X公司也取到了很多连号人民币,并且决定红包里先包这些连号人民币。由于X公司取到的现金较多,需要你编个程序帮助它统计连号人民币张数超过10(包括10)的个数,并输出最长连号人民币。

输入格式:

输入为两行,第一行为一个正整数 n (1≤n≤105),代表百元人民币的张数。
随后一行为n个正整数,分别代表每一张人民币的编号(不超过8位的非负整数),中间用空格隔开。

输出格式:

输出为两行,第一行为一个整数,表示输入序列中连号人民币的张数超过10的序列个数。

第二行按照输入顺序输出最长连号人民币的编号,中间用1个空格分隔,首尾不能有多余空格。最长连号人民币如果有多个,输出最先出现的那个。

输入样例:

10
1 2 3 4 5 6 7 8 9 10

输出样例:

1
1 2 3 4 5 6 7 8 9 10

#include<stdio.h>
#define N 100010
int a[N];
int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int res=0,r=0,length=1,max=0,rmax=0;
    
    for(i=0;i<n;i++)
    {
            while(a[i+1]-a[i]==1&&i<n)
            {
                length++;
                r++;
                i++;
            }
            if(length>=10)
            {
                res++;
            }
            if(length>max)
            {
                max=length;
                rmax=r-length+1;
            }
            length=1;
            r++;
    }
    printf("%d\n",res);
    for(i=rmax;i<max+rmax;i++)
    {
        printf("%d",a[i]);
        if(i<max+rmax-1)printf(" ");
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值