南阳理工NYOJ 975关于521


关于521

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

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

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

输入
多组测试数据:
一行给定两个数a,b(0<a,b<1000000),表示数字的开始和结束。
输出
一行显示他想要知道的数有几个及显示有多少个数字令他特别的愤怒。用空格隔开。
样例输入
200 500
300 900
1 600
样例输出
Case 1:2 0
Case 2:2 1
Case 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. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值