首页 > 其他分享 >第2328试题

第2328试题

时间:2023-04-01 16:55:17浏览次数:27  
标签:输出 正整数 试题 一个 2328 筛选 幸运 整除

题目描述

判断一个正整数 n 是否能被一个“幸运数”整除。幸运数是指一个只包含 4 或 7 的正整数,如 7 、47 、477 等都是“幸运数”,17 、42 则不是“幸运数”。

输入要求

一行一个正整数 n ,\(1 \leq n\leq 1000\)。

输出要求

一行一个字符串,如果能被幸运数整除输出“YES”,否则输出“NO”。

个人思路

  其实一开始看到这个题目,我的想法是做一个“幸运数”的生成器,然后筛选出指定范围内的“幸运数”,用来除正整数 n 。这样在枚举运算时尝试次数会更少,但是实现起来比起下面的方法会更加麻烦。
  这里采用了一个更加暴力的方法:把小于 n 的数全部除一遍,然后从中筛选可整除的“幸运数”。(如果想要优化一下的话可以考虑只枚举到\(\sqrt n\))那么我们现在就有了两个需要检查的条件:
  1.是"幸运数":“幸运数”是只包含 4 或 7 的正整数,那就需要对除数逐位检查是否为 4 或 7,这里需要用到一个以后常用的小技巧:交替模(%)10 和除(/)10 以分离数的每一位。每次分离出除数的一位判断是否是 4 或 7 ,如果是则检查下一位,只要不是就立即跳出循环,检查下一个数。
  2.可被整除:对筛选出的“幸运数”加以标记后(flag = 1)除正整数 n ,判断是否整除。如找到可整除的“幸运数”则输出“YES”,如没有任何(可整除的)“幸运数”则最终输出“NO”。

参考代码

#include <iostream>

using namespace std;

int main()
{
  int n = 0, i = 0, j = 0, flag = 0;
    cin >> n;
    for (i = 1; i <= n; i++) //用比n小的所有数除数n,寻找其中可整除的“幸运数”
    {
        j = i;
        do//循环检查除数的每一位是否只有4或者7,筛选“幸运数”
        {
            if (j % 10 == 4 || j % 10 == 7)
                flag = 1;
            else//若出现非4或7的数则说明不是“幸运数”,终止循环
            {
                flag = 0;
                break;
            }
            j /= 10;//检查除数的下一位
        } while (j);//除数的每一位都检查过,终止循环

        if (flag == 1 && n % i == 0)// 找到可整除的“幸运数”
            cout << "YES" << endl;
    }
    if (flag == 0)//没有找到任何可整除的“幸运数”
        cout << "NO" << endl;
    return 0;
}

标签:输出,正整数,试题,一个,2328,筛选,幸运,整除
From: https://www.cnblogs.com/Overseer5-1-szs/p/17278706.html

相关文章

  • 杭电计算机复试笔试题
    2018杭电计算机复试笔试题1简单题题目1:杭电实验室会定期去电影院看电影,按照惯例,每个成员需要先抽一个号码。给出n个人的名字,各抽取一个数字,自己用一种数据结构存取人的名字和抽取数字信息(票数)1.定义一种数叫丑数,其因子除1外只有2.3.5的倍数,(例如4,10,是丑数,11,13不是),输出......
  • 测试面试题
    软件测试1、软件的定义?软件是一系列按特定顺序组织的计算机数据和指令的集合,包括与计算机系统操作有关的程序、规程、规则、文件、文档和数据。软件被划分为系统软件、应用软件和中间件。软件不仅包括电脑程序,还包括与这些程序相关的文档,可简单地理解为程序和文档的集合。2、......
  • 阶段小结:批量删除的时候使用 this.id的详解、jquery里面的$(this)和this的区别、面试
    this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id文章目录this.id指的是当前对象的id比如我点击了button那么此button按钮的id就可以用this.id我们先看项目里面方式1:利用样式,可以隐藏,但是不推荐方式二主角this.id方式:给点击删除的时候......
  • 渡一教育_每日一练:对象的加载、对象的创建相关知识面试题
    系列文章目录文章目录系列文章目录题目一:对象的加载、对象的创建相关知识面试题题目答案和解析题目一:对象的加载、对象的创建相关知识面试题题目答案和解析用内存图来做就很简单所以我们从上图可以看出,跟类加载机制有关系传参传参完毕之后,就开始执行那个方法了=最终的答案是D......
  • 总结的面试题、数组下标为什么从0开始、数组名中存储的是什么、数组的元素如何存储
    系列文章目录文章目录系列文章目录第一题第二题第一题详细解答链接:https://mp.weixin.qq.com/s/N1Mj3DLbFkZeT5hVR05eNA第二题数组的存储:1、数组下标为什么从0开始?下标表示的是这个元素的位置距离首地址的偏移量2、数组名中存储的是什么数组名中存储的是数组在堆中一整块区域......
  • C++面试必备:常见C++面试题汇总及详细解析
    C++作为一门重要的编程语言,其在面试中常常是热门的考察对象。本文将会介绍一些常见的C++面试题,帮助C++面试者避免很多不必要的困惑和迷惑。每个问题都有相对应的答案,以便各位同学快速查阅。C++和C的区别是什么?C++是C的超集,也就是说,C++包括了C的所有基础特性,并且还增加了一些新的......
  • 测试题2
         ......
  • 「高频必考」Docker&K8S面试题和答案
    先送福利:Go如何自动解压缩包?|文末送书Docker如何在Docker容器内部访问主机上的服务?可以通过设置主机网络模式,使用--net=host参数来访问主机上的服务。这样,容器和主机将共享一个网络命名空间,容器将可以直接访问主机上的服务。如何在Docker容器中运行多个进程?Docker推荐每个容......
  • unity3d面试题及答案
    unity3d面试题及答案1.请描述游戏动画有哪几种,以及其原理。答:主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。    关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画;   单一网......
  • MySQL数据库面试题
    数据库三大范式是什么第一范式:每个列都不可以再拆分。第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理......