nyist_975 关于521

关于521
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去。
浏览网页的流年忽然看到了网上有人用玫瑰花瓣拼成了521三个数字,顿时觉得好浪漫,因为每个男生都会不经意的成为浪漫的制造者。此后,流年走到哪里都能看到5、2、1三个数字,他怒了,现在他想知道在连续的数中有多少数全部包含了这三个数字。例如12356就算一个,而5111就不算。特别的,如果他看到了521三个数连续出现,会特别的愤怒。例如35210。
输入
多组测试数据:
一行给定两个数a,b(0

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf -0x3f3f3f3f
#define mem0(a) memset(a,0,sizeof(a))
int b[1000000+10];
int c[1000000+10];
int main()
{
    mem0(b);
    mem0(c);
    for(int i = 125; i <=1000000+1;i++){
        int mm = i ;
        int t = 0 ,tt= 0, ttt = 0;
        while(mm){
            if(mm%1000==521){
                c[i]=c[i-1]+1;
                b[i]=b[i-1]+1;
                break;
            }
            int cc= mm%10;
            if(cc==1)
                t++;
            else if (cc==5)
                tt++;
            else if(cc==2)
                ttt++;
            if(t&&tt&&ttt)
                b[i]=b[i-1]+1;
            else{
                c[i]=c[i-1];
                b[i]=b[i-1];
            }
            mm/=10;
        }
    }
    int x,y,z=1;
    while(scanf("%d%d",&x,&y)!=EOF){
        printf("Case %d:%d %d\n",z++,b[y]-b[x-1],c[y]-c[x-1]);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值