qq_40738424 2019-10-24 10:41 采纳率: 66.7%
浏览 1277
已采纳

幸运数问题,这个该怎么写啊毫无思路,求代码,求思路

明明喜欢7这个数字,如果一个数的十进制表示中含有7,则该数为明明的幸运数。例如7,78,17都是幸运数,而168不是幸运数。

如果一个数能够被幸运数整除,则称之为近似幸运数。例如14能被7整除,是一个近似幸运数。

现给定两个正整数,请输出这个区间内(含区间首尾)既不是幸运数也不是近似幸运数的那些数的数量;如果不存在,则输出0。

输入描述
输入两个整数a, b。
输出描述
输出为一个数,表示[a, b]区间中既不是幸运数也不是近似幸运数的数的数量。

注释
【数据范围】

50%的数据满足:1 <= a,b <= 10,000

100%的数据满足: 1 <= a,b <= 1,000,000

  • 写回答

5条回答

  • tdnexhx 2019-10-24 11:58
    关注

    C++代码如下
    #include 《string》
    #include 《vector》

    void main()
    {
    // TODO: Place code here.
    std::vector arrLuck; // 记录幸运数
    std::vector arrOther;
    std::vector arrLuck2; // 记录伪幸运数
    int A = 0;
    int B = 100;
    char sNum[10];
    for (int i = A; i < B; i++) // AB是定义的区间
    {
    sprintf(sNum,"%d",i);// 数字转换为字串,字符换查询是否有7
    if (strchr(sNum,'7')!=NULL)
    arrLuck.push_back(i); //包含幸运数7,记录下
    else
    arrOther.push_back(i);
    }
    for (i = 0; i < arrOther.size(); i++)
    {
    int a = arrOther[i];
    for (int j = 0; j < arrLuck.size(); j++)
    {
    if (a % arrLuck[j] == 0) // 能被幸运数整除,则为伪幸运数
    {
    arrLuck2.push_back(a);
    break;
    }
    }
    }
    int result = (B - A) - arrLuck.size() - arrLuck2.size(); // 总数-幸运数-伪幸运数
    printf("result = %d\r\n", result);
    }

    运行输出62 就是答案
    其中2头文件为 《》 替换为<>

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题