杭电acm2089

http://acm.hdu.edu.cn/showproblem.php?pid=2089

这题感觉应该用打表的方法,否则会超时,刚开始时用把数字放到字符串里,然后依次判断,因为查询的方向错了,wa,,,,后来用数字对10和100取模然后跟4和62比较,会更简洁。

把所有判断好的数按顺序在数字(或字符串)中做好标记,然后可以在输入后直接计算结果

View Code
 1 #include<stdio.h>
 2 int jili(int n)
 3 {
 4  char s[500];
 5  int i=0,j;
 6  while(n)
 7  {
 8   if(n%10==4||n%100==62)//判断是否为吉利数字
 9     return 0;
10   n/=10;
11  }
12  return 1;
13 }
14 int main()
15 {
16  int a,b,t,i;
17  char ans[1000001];
18  for(i=1;i<=1000000;i++)
19    if(jili(i))
20      ans[i]='1';
21    else ans[i]='0';//打表
22  while(scanf("%d%d",&a,&b)&&(a||b))
23  {
24    t=0;
25    for(;a<=b;a++)
26      t+=ans[a]-'0';
27    printf("%d\n",t);
28  }
29  return 0;
30 }

 

转载于:https://www.cnblogs.com/huzhenbo113/archive/2013/04/02/2996635.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值