首页
社区
课程
招聘
[原创]赛题1提交 - vxasm
2008-10-20 12:46 6947

[原创]赛题1提交 - vxasm

2008-10-20 12:46
6947
支持论坛举办此类活动,重在参与!

主要的算法代码如下,算出结果的时间不超过1毫秒。

//
//函数功能:统计整数n中数字k的出现频率
//
//参数1:n - 被统计的整数
//参数2:k - 要统计的数字
//返回值:该数字的出现频率
//
int countx(int n, int k)
{
    int count = 0;
    int factor = 1;
    int lower = 0;
    int curr = 0;
    int higher = 0;

    while (n/factor != 0)
    {
        lower = n - (n/factor) * factor;
        curr = (n/factor) % 10;
        higher = n / (factor*10);
        
        if (curr < k )
        {
            // 如果当前位数字小于k,则:k的出现次数=高位数字×当前因子
            count += higher * factor;
        }
        else if (curr == k)
        {
            // 如果当前位数字等于k,则:k的出现次数=高位数字×当前因子+低位数字+1
            count += higher * factor + lower + 1;
        }
        else if (curr > k)
        {
            // 如果当前位数字大于k,则:k的出现次数=(高位数字+1)×当前因子
            count += (higher + 1) * factor;
        }

        factor *= 10;
    }

    return count;
}

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回