• 找数字个数


    链接:https://www.nowcoder.com/acm/contest/67/I
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

        lulu喜欢小于等于1000的正整数,但是如果某个数是a或b的倍数,lulu会讨厌这个数。如果某个数里包含了a和b两个数里包含的数,lulu也会讨厌。(例如a=14,b=23,如果数字中包含1、2、3、4这四个数中的任意一个数,lulu就会讨厌这个数)。现在告诉你a,b,你能说出lulu喜欢的数有多少个么。

    输入描述:

    第一行是样例数T
    第2到2+T-1行每行有2个整数a b。

    输出描述:

    输出lulu喜欢的数的个数
    示例1

    输入

    3
    2 3
    14 23
    1234 5678

    输出

    171
    190
    7

    说明

    a=1234 b=5678的时候,只考虑含有数字9,0的数,只有7个,分别是9,99,999,90,990,909,900

    备注:

    对于100%的数据,
    0 < T <= 20;
    0 <= a <= 99999;
    0 <= b <= 99999。

    代码:
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int ans = 0;
    bool pr[1003];
    void search(int n)
    {
        for (int i = n; i <= 1000; i += n)
        {
            if (pr[i])
            {
                pr[i] = false;
                ++ans;
            }
        }
    }
    void find(int n)
    {
        for (int i = 1; i <= 1000; ++i)
        {
            if (pr[i])
            {
                int node = i;
                int v = 0;
                while (node)
                {
                    if (node % 10 == n)
                    {
                        v = 1;
                        break;
                    }
                    node /= 10;
                }
                if (v)
                {
                    ++ans;
                    pr[i] = false;
                }
            }
        }
    }
    int main()
    {
        int flag;
        while (cin >> flag)
        {
            while (flag--)
            {
                int n, m;
                while (cin >> n >> m)
                {
                    int nn[10];
                    memset(nn, 0, sizeof(nn));
                    memset(pr, true, sizeof(pr));
                    ans = 0;
                    search(n);
                    search(m);
                    int node = n;
                    while (node)
                    {
                        ++nn[node % 10];
                        node /= 10;
                    }
                    node = m;
                    while (node)
                    {
                        ++nn[node % 10];
                        node /= 10;
                    }
                    for (int j = 0; j < 10; ++j)
                    {
                        if (nn[j] != 0)
                            find(j);
                    }
                    cout << 1000 - ans << endl;
                    getchar();
                }
            }
        }
        return 0;
    }

    今天也是元气不满的一天! bad luck!

  • 相关阅读:
    python基础_类的继承
    python基础_命名规范
    jmeter分布式压测(linux)
    Jmeter压测报错java.net.BindException: Address already in use: connect
    分布式压测平台之Ngrinder(安装篇)
    关于TeamCenter流程开发Handler问题
    C语言中的指向运算符:->
    Eclipse Action与Command的区别
    Eclipse开发RCP项目的plugin.xml详解
    Swing中通过按钮对表格JTable选中行对象进行上移和下移的操作
  • 原文地址:https://www.cnblogs.com/cattree/p/8324641.html
Copyright © 2020-2023  润新知