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 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题