题解 | #数圈圈#

数圈圈

https://ac.nowcoder.com/acm/problem/14556

这个圈圈竟然是数字的圈,离大谱,本蒟蒻看样例看到怀疑人生QAQ,究极折磨。

emm,思路就是先遍历一下1~1e6,每个数的圈圈求一下,用一个数组保存,再用前缀和处理。

#include<iostream>
using namespace std;
int a, b, n, m, l, r, ans, sum;
int arr[2000000]; int s[2000000];
int main()
{
    cin >> n;
    for (int i = 1; i <= 1e6; i++)
    {
        int x = i;
        while (x > 0)
        {
            if (x % 10 ==4||x%10==6||x%10==9||x%10==0)//有一个圈
            {
                arr[i]++;
            }
            else if (x % 10 ==8)//8有两个圈
            {
                arr[i] += 2;
            }
            x /= 10;
        }
    }
    for (int i = 1; i <= 1e6; i++)
    {
        s[i] = arr[i] + s[i - 1];//前缀和
    }
    while (n--)
    {
        cin >> a >> b;

        cout << s[b] - s[a - 1] << endl;


    }

# 

    return 0;
}
第一篇题解,完结撒花!!!
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务