天涯人论坛
先登录吧!!!
登录可以体验更多权限哦!!!
天涯人论坛

为编程爱好者打造一个学习、交流的平台。
 
首页首页  欢迎页欢迎页  注册注册  登录登录  
论坛刚刚起步,欢迎大家多多支持! 如果有想申请管理员或版主的请给管理员留言!!!
欢迎大家积极发帖!

分享 | 
 

 不要62

向下 
作者留言
让一切随风
Admin
avatar

帖子数 : 257
注册日期 : 12-11-03
年龄 : 26
地点 : 湖南

帖子主题: 不要62   周六 四月 20, 2013 8:42 pm

不要62
Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。
杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。
不吉利的数字为所有含有4或62的号码。例如:
62315 73418 88914
都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。
你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。

Input 输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。


Output 对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。


Sample Input 1 100
0 0


Sample Output 80


代码:
#include <stdio.h>

int A(int n)
{
    int i = 1;
    while (n)
    {
        if (n % 10 == 4 || n % 100 == 62)
            return i;
        n /= 10;
        i *= 10;
    }
    return 0;
}

int main(void)
{
    int n, m, i, c, b;
    int *a = new int[1000000];

    a[0] = 0;
    for (c = 0,i = 1; i < 1000000; i += b)
    {
        b = A(i);
        if (!b) c += b = 1;
        for (n = 0; n < b; n++)
            a[i + n] = c;
    }

    while (scanf("%d%d", &n, &m), n + m)
        printf("%d\n", a[m] - a[n-1]);

    return 0;
}

返回页首 向下
http://tyren.longluntan.org
 
不要62
返回页首 
1页/共1

您在这个论坛的权限:不能在这个论坛回复主题
天涯人论坛 :: 我爱编程 :: c语言-
转跳到: