假期刷题打卡--Day18

news2024/9/23 11:23:58

1、MT1168阶乘数

输入正整数N,找出它是否是一个等于其他数的阶乘值的数,输出YES或者NO。

格式

输入格式:

输入正整数N

输出格式:

输出YES或者NO

样例 1

输入:

5

输出:

NO
相关知识点
阶乘

可以理解为:小于等于某个正整数的所有正整数的乘积。

例如:5 的阶乘(记作 5!)= 5 × 4 × 3 × 2 × 1

1到10的阶乘数如下:

1! = 1

2! = 2 × 1 = 2

3! = 3 × 2 × 1 = 6

4! = 4 × 3 × 2 × 1 = 24

5! = 5 × 4 × 3 × 2 × 1 = 120

6! = 6 × 5 × 4 × 3 × 2 × 1 = 720

7! = 7 × 6 × 5 × 4 × 3 × 2 × 1 = 5040

8! = 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 40320

9! = 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 362880

10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1 = 3628800

阶乘数(与本题无关,仅供了解)

(来自百度百科      阶乘数_百度百科 (baidu.com))

定义:阶乘数是一种有着特殊规律、每位以阶乘为权的数字。

公式:abcd=a*a!+b*b!+c*c!+d*d! 。即:该数据的值等于各个位上数字乘以其阶乘数之和。

        例:

分析过程

         这里判断的是阶乘值,而不是阶乘数,不要因为这个题目被忽悠了。我看到这个题目我就去搜了一下什么是阶乘数,然后怎么想都觉得不太合适,怎么都计算不出正确结果,然后我就看了一下别人的思路,发现是求的某个数阶乘的值,查看是否是某个数的阶乘。就比如说,如果输入1,就是1的阶乘值;输入2,可以认为是2的阶乘(2*1=2);输入6,就是3的阶乘值(3*2*1=6)等等。

         所以说,这个题就是去查看输入的数是否是某个数的阶乘。

如果用例不多的话,可以直接按照常见的几个阶乘排除即可。

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    if(n==1||n==2||n==6||n==24||n==120||n==720){
        cout << "YES";
    }else{
        cout << "NO";
    }

    return 0;
}

也可以使用循环结构一一查看。

实现思路:首先,设置一个总数,sum=1(用来计算阶乘值),再设置一个flag(用来判断是否有满足条件的sum,即sum==n),设置初值为0,然后设置一个循环(while循环或者for循环),在循环里面判断输入值是否满足条件。

实现代码
#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,sum=1,flag=0;
    cin >> n;
    for(int i=1;sum<=n;i++){//也可以是i<=n
        sum*=i;
        if(sum==n){
            cout << "YES";
            flag = 1;
            break;
        }
    }
    if(flag==0){
        cout << "NO";
    }
    return 0;
}
#include<bits/stdc++.h> 

using namespace std;

int main( )
{

    int n,x=1,c=1;
    cin >> n;
    // cout << n << "$$";
    while(c<n){
        x++;
        c*=x;
        // cout << c << "*" << x << "dd";
    }
    if(c==n){
        cout << "YES";
    }
    else
        cout << "NO";
    return 0;
}

2、MT1170四叶玫瑰数

输入正整数N,判断它是不是一个四叶玫瑰数,输出YES或者NO。四位玫瑰数是4位数的自幂数,它的每个位上的数字的4次幂之和等于它本身。

格式

输入格式:

输入正整数N

输出格式:

输出YES或者NO

样例 1

输入:

1634

输出:

YES
相关知识点
自幂数:

定义:指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。

例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数

0到9是自幂数,但是不是四页玫瑰树。

分析过程

 此题就是要判断输入数是否等于它每个位上n次方的平方,这里n是4。

例:

1634就是去判断1634是否等于1的4次方+6的4次方+3的4次方+4的次方。

所以,按照上述思路,第一次写的代码:
 

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
//这里求输入数的每个数的4次幂,第二三四位不仅需要使用除法解决,还要用求余来求出
    int m = (pow(n/1000,4)+pow(n/100%10,4)+pow(n/10%10,4)+pow(n/1%10,4));
    if(n==m){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

 但是,上面代码只能通过一个用例:

按照评论区的想法,加一个判断语句,也只能过两个用例:

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    int m;
    if(n>999 && n<10000)
        m = (pow(n/1000,4)+pow(n/100%10,4)+pow(n/10%10,4)+pow(n/1%10,4));
    if(n==m){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

 然后,继续修改:

发现,没有考虑到0这个特殊情况(也可以说没有考虑到不是四位数的自幂数),所以,就在判断的时候加上n!=0就可以通过了(不过这个可能是凑巧通过了这道题的用例,放到其他用例上有可能还是不太正确),所以,要在考虑的时候查看输入值是否是四位数,如果是,则按照自幂数的方式进行计算看是否满足条件,如果不是,则直接输出NO,并结束(若不结束,则可能会出现继续往下面判断的情况,即有可能输出NOYES,或者其他情况)。

实现代码
#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    int m;

    if(n>999 && n<10000)
        m = (pow(n/1000,4)+pow(n/100%10,4)+pow(n/10%10,4)+pow(n%10,4));
    if(m==n && n!=0){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

或者:

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    int m;

    if(n>999 && n<10000){
    	m = (pow(n/1000,4)+pow(n/100%10,4)+pow(n/10%10,4)+pow(n%10,4));
	}else{
		cout << "NO";
		return 0;
	}  
    if(m==n ){
        cout << "YES";
    }else{
        cout << "NO";
    }
    return 0;
}

不过,一个代码尽量不要出现多个出口,所以直接把判断语句写到上面就可以了。

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n;
    cin >> n;
    int m;

    if(n>999 && n<10000){
    	m = (pow(n/1000,4)+pow(n/100%10,4)+pow(n/10%10,4)+pow(n%10,4));
        if(m==n ){
            cout << "YES";
        }else{
            cout << "NO";
        }
	}else{
		cout << "NO";
	}     
    return 0;
}

明天继续吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1421132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

研发人员如何做好日常工作的稳定性保障

一、前言 二、稳定性介绍 三、实际操作流程 1、需求分析阶段 2、设计阶段 2、1备选架构 2、2方案设计 2、3 架构设计 2、4设计的checklist 2、5的checklist 3、开发联调 4、自测环节 5、上线前环节 6、上线后的验收和复盘 四、稳定性、效率、成本之间的考量 五、…

12306 真的很拉跨吗?春运是对它最大的误解!

春节降至&#xff0c;大家都抢到火车票了吗&#xff1f;马上就要迎来春节&#xff0c;是不是都在吐槽 12306 的种种不好&#xff0c;它真的有这么拉跨吗&#xff1f; 其实不然&#xff0c;每到各种节假日&#xff0c;都是对 12306 最大的误解&#xff01; 特别是春运&#xf…

Vite+Vue3使用Vue-i18n笔记

一、下载依赖 vue-i18n yarn add vue-i18n创建存放语言文件的目录 以及配置文件的配置 我是在src/lang 新建index.ts、cn.ts、en.ts以及test文件夹其中再分别新建cn.ts以及en.ts /lang/index.ts 用于导出vue-i18n需要的配置对象 import en from "./en.ts"; import…

PYTHON蓝桥杯——每日一练(简单题)

题目 利用字母可以组成一些美丽的图形&#xff0c;下面给出了一个例子&#xff1a; ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形&#xff0c;请找出这个图形的规律&#xff0c;并输出一个n行m列的图形。 输入格式 输入一行&#xff0c;包含两个整数…

[ESXi 8]安装centos7

文章目录 创建虚拟机创建虚拟机选择centos7选择存储选择镜像文件上传ios镜像文件 安装即将完成 启动虚拟机自动获取ip设置root密码安装成功 创建虚拟机 创建虚拟机 选择centos7 选择存储 选择镜像文件 上传ios镜像文件 如图显示上传进度&#xff0c;上传完毕之后&#xff0c;将…

【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》

文章目录 1 基础关1.1 基础书籍1.2 提高书籍1.3 课程链接1.4 编程实战 2 阅读关2.1 分层过滤2.2 集团作战&#xff0c;信息获取2.3 论文如何泛读 3 动机 方向关3.1 快速发论文3.2 好的研究 4 写作关4.1 论文写作流程4.2 从读者角度出发4.3 每一部分怎么写4.3.1 Abstract摘要4.3…

一体化设计:兼容多种OS系统Linux网关楼宇DDC

在工业物联网&#xff08;IIoT&#xff09;和智能建筑领域&#xff0c;钡铼网关具备高度灵活性与强大计算能力的边缘网关产品正逐渐成为推动行业智能化转型的关键要素。本文将详细介绍的基于Linux系统的4G工业智能网关&#xff0c;不仅拥有NXP i.MX8M Mini四核64位处理器的强大…

直播观看人次破30W | 极新「2024未来直播电商科技峰会」圆满落幕

“共话直播电商&#xff06;消费科技行业破局之道” 文&#xff5c;德江&凯丰 编辑 | 云舒 出品&#xff5c;极新 1月27日&#xff0c;由极新携手北京电子商务协会联合举办的「2024未来直播电商科技峰会」圆满落幕&#xff01;在峰会上&#xff0c;共进行了10 场演讲 &a…

【C++】笔试训练(八)

目录 一、选择题二、编程题1、两种排序方法2、求最小公倍数 一、选择题 1、关于重载函数&#xff0c;哪个说明是正确的&#xff08;&#xff09; A 函数名相同&#xff0c;参数类型或个数不同 B 函数名相同&#xff0c;返回值类型不同 C 函数名相同&#xff0c;函数内部实现不…

018 用户交互Scanner

什么是Scanner对象 next()方法 // 声明输入对象 Scanner scanner new Scanner(System.in);System.out.println("next()方法接收&#xff1a;"); if (scanner.hasNext()) {// 输入 Hello worldString str1 scanner.next();// 输出 HelloSystem.out.println(str1); }…

能替代微软AD的国产化方案,搭建自主可控的身份管理体系

随着国产化替代步伐加速&#xff0c;以及企业出于信息安全建设的需要&#xff0c;越来越多的企业和组织开始考虑将现有的微软 Active Directory&#xff08;AD&#xff09;替换为国产化的LDAP身份目录服务&#xff08;也称统一身份认证和管理&#xff09;系统。本文将介绍一种国…

Excel中将16进制数转化成10进制(有/无符号)

Excel中将16进制数转化成10进制&#xff08;有/无符号&#xff09; Excel或者matlab中常用XXX2XXX进行不同进制的转换 16进制转10进制&#xff08;无符号数&#xff09;&#xff1a;HEX2DEC 16进制转10进制&#xff08;有符号数&#xff09;&#xff1a; FA46为例&#xff0c…

系统架构19 - 面向对象

面向对象设计 相关概念面向对象分析基本步骤基本原则分析模型 面向对象设计设计模型类的类型 面向对象编程基本特点需求建模设计原则面向对象软件测试 相关概念 接口&#xff1a;描述对操作规范的说明&#xff0c;其只说明操作应该做什么&#xff0c;并没有定义操作如何做。消…

基于链表实现贪吃蛇游戏

本文中&#xff0c;我们将使用链表和一些Win32 API的知识来实现贪吃蛇小游戏 一、功能 &#xff08;1&#xff09;游戏载入界面 &#xff08;2&#xff09;地图的绘制 &#xff08;3&#xff09;蛇身的移动和变长 &#xff08;4&#xff09;食物的生成 &#xff08;5&…

Utreexo:优化Bitcoin UTXO集合的基于哈希的动态累加器

1. 引言 前序博客&#xff1a; Utreexo&#xff1a;比特币UTXO merkle tree proof以节约节点存储空间 MIT Digital Currency Initiative 的 Thaddeus Dryja 2019年论文 Utreexo: A dynamic hash-based accumulator optimized for the Bitcoin UTXO set。 开源代码实现见&…

如何在DBeaver中重命名数据库

前言 DBeaver是一款强大的开源通用数据库管理和开发工具&#xff0c;支持多种数据库类型。在某些数据库系统中&#xff0c;你可以直接通过DBeaver的图形界面来重命名数据库名称。本文将详细介绍如何在DBeaver中进行数据库重命名操作。 重要提示&#xff1a; 对于不同的数据库…

SSD寻址单元IU对寿命的影响有多大?

随着存储技术的不断进步&#xff0c;固态硬盘SSD的容量正以惊人的速度增长&#xff0c;尤其是采用高密度QLC NAND闪存技术的大容量SSD&#xff0c;如30TB及以上级别的产品。QLC NAND由于每个单元能够存储4比特数据&#xff0c;从而显著提高了存储密度&#xff0c;但同时也带来了…

Web服务器之Tomcat

文章目录 Web 服务器软件简介资源分类访问流程常见的Web服务器软件 Tomcat简介使用步骤使用Tomcat注意事项部署项目的方式方式一方式二方式三 问题中文乱码黑窗口一闪而过启动报错 Web 服务器软件 简介 服务器&#xff1a;安装了服务器软件的计算机服务器软件&#xff1a;接收…

ssm跨域方案?

1、过滤器 2、xml配置 <mvc:cors><mvc:mapping path"/**" /> </mvc:cors>3、注解 CrossOrigin(origins “*”) 说明&#xff1a;三种方案&#xff0c;本质都是一样的、只是方式不一样罢了。

实现SERVLET生命周期事件

实现SERVLET生命周期事件 问题陈述 David Wong是Smart Software Developers的管理员,他希望创建一个应用程序在日志中记录请求和上下文对象初始化及向上下文对象添加属性的时间。同时,该应用程序应该还能在日志中记录删除上下文对象的属性及销毁请求和上下文时的时间。 解决方…