题解 | #[NOIP2013]记数问题# 哈希表

[NOIP2013]记数问题

http://www.nowcoder.com/practice/28b2d9f2bf2c48de94a1297ed90e1732

描述

试计算在区间的所有整数中,数字x0 ≤ x ≤ 9)共出现了多少次?
例如,在111 中,即在1234567891011 中,数字出现了次。

输入描述:

输入共1行,包含2个整数n、x,之间用一个空格隔开。

输出描述:确定

输出共1行,包含一个整数,表示x出现的次数。


具体思路是:将1~n的区间遍历一遍,在遍历的过程中将区间内出现的数都统计一遍
在以x为下标的元素输出数组内容即可。(有待优化。。。)

int main()
{
    int hash[10]={0}; //定义哈希表
    int n,x;
    scanf("%d %d",&n,&x);
    for(int i=1;i<=n;i++)  //遍历区间
    {
        int tem = i;
        while(tem)         //计算
        {
            hash[tem%10]++;
            tem/=10;
        }
    }
    printf("%d",hash[x]); //输出
    
}


全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务