南阳理工NYOJ 975关于521

来源:互联网 发布:网络诈骗法律经验 编辑:程序博客网 时间:2024/05/17 21:53


关于521

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述

Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去。

浏览网页的流年忽然看到了网上有人用玫瑰花瓣拼成了521三个数字,顿时觉得好浪漫,因为每个男生都会不经意的成为浪漫的制造者。此后,流年走到哪里都能看到521三个数字,他怒了,现在他想知道在连续的数中有多少数全部包含了这三个数字。例如12356就算一个,而5111就不算。特别的,如果他看到了521三个数连续出现,会特别的愤怒。例如35210

输入
多组测试数据:
一行给定两个数a,b(0<a,b<1000000),表示数字的开始和结束。
输出
一行显示他想要知道的数有几个及显示有多少个数字令他特别的愤怒。用空格隔开。
样例输入
200 500300 9001 600
样例输出
Case 1:2 0Case 2:2 1Case 3:6 1
分析:

这是一道数据结构题,有两个新知识:

strstr()函数搜索一个字符串在另一个字符串中第一次出现的地址,如果没有,则返回NULL

strchr()查找字符串s中首次出现字符c的位置

sprintf(s,“%d‘,n)字符串格式化命令,将格式化数据写入某个字符串中


01.#include<stdio.h>
02.#include<stdlib.h>
03.#include<string.h>
04.int m[1000005],n[10000005];
05.int main()
06.{
07.int a,b,t=0,k=0,i,f,j,c,d,e,v=1;
08.char s[10];
09.memset(m,0,sizeof(m));
10.memset(n,0,sizeof(n));
11.for(i=125; i<=1000005; i++)
12.{
13.j=i,f=0;
14.memset(s,'\0',sizeof(s));
15.sprintf(s,"%d",j);
16.d=strlen(s);
17.if(strchr(s,'1')&&strchr(s,'2')&&strchr(s,'5'))
18.{
19.t++;
20.if(strstr(s,"521"))
21.k++;
22.}
23.m[i]=t;
24.n[i]=k;
25.}
26.while(scanf("%d%d",&a,&b)!=EOF)
27.{
28.printf("Case %d:%d %d\n",v++,m[b]-m[a-1],n[b]-n[a-1]);
29.}
30.return 0;
31.}

0 0
原创粉丝点击