假期刷题打卡--Day20

1、MT1173魔数

一个数字,把他乘以二,会得到一个新的数字,如果这个新数字依然由原数中那些数字组成,就称原数为一个魔数。输入正整数N,检查它是否是一个魔数,输出YES或者NO。

格式

输入格式:

输入正整数N

输出格式:

输出YES或者NO

样例 1

输入:

142857

输出:

YES
分析过程

看到这个题目的时候,第一想法是将输入数存入到一个数组当中,然后计算出2倍的输入数,然后拿计算出来的数一一和输入数的每一位进行对比。但是,在分析的时候,发现我遗漏了一下条件,这个题目需要实现的是两个条件:

  • 得到的两个数的个数相同,即每个数出现的次数应该是一样的;
  • 得到的两个数中的数字顺序可以不同,但是所含数字是一样的

所以,按照上述条件,我的解决思路是,先将两个数存入到两个数组当中,然后对两个数组里面的元素进行排序,如果每个元素都相同的话,则输出YES,否则输出NO。

        然后,按照这个思路,我写了一段代码:

#include<bits/stdc++.h> using namespace std;int main( )
{int n,a[10] = {0},b[10]={0};cin >> n;int q=n,m = 2 * n,p=m;int flag = 1;int count=0;
//首先将输入数存入数组中while(n!=0){a[count]=n%10;n/=10;count++;}//然后使用冒泡排序对输入数的元素进行从小到大排序for(int i=0;i<count-1;i++){for(int j=0;i<count-i-1;i++){//习惯性的把循环变量写成了i,但是在这应该是jif(a[j]>a[j+1]){int tmp = a[j];a[j]=a[j+1];a[j+1]=tmp;}}} 
//将输入数的2倍数存入数组中while(m!=0){count = 0;//count每次放在里面,每次循环都置为0,最终结果只能是1,所以应该放在外面b[count]=m%10;m/=10;count++;}for(int i=0;i<count-1;i++){for(int j=0;i<count-i-1;i++){//这个也是同样的错误if(a[j]>a[j+1]){//这里是对b数组排序,而不是a,这里直接复制了,没有修改,应该全部修改为bint tmp = a[j];a[j]=a[j+1];a[j+1]=tmp;}}} for(int z=0;z>count;z++){//这里的判断语句就是错的,如果是>,那么永远无法为NO,所以,这里应该修改为<if(a[z]!=b[z]){flag = 0;break;}}if(flag==1) cout << "YES";else cout << "NO";return 0;
}

但是,只能通过一个用例:

于是,又开始了找错~

发现了好多个错误,难怪呢,于是,我把错误全部标在了上一个代码中。

修改错误后,得到了我想法的最终代码:

实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{int n,a[10] = {0},b[10]={0};cin >> n;int q=n,m = 2 * n,p=m;int flag = 1;int count=0,tmp;
//首先将输入数存入数组中while(n!=0){a[count]=n%10;n/=10;// cout << a[count];count++;}// cout << count;//然后使用冒泡排序对输入数的元素进行从小到大排序for(int i=0;i<count-1;i++){for(int j=0;j<count-1-i;j++){if(a[j]>a[j+1]){tmp = a[j];a[j]=a[j+1];a[j+1]=tmp;}}} // for(int i=0;i<count;i++){//     cout << a[i];// }
//将输入数的2倍数存入数组中count = 0;while(m!=0){b[count]=m%10;m/=10;// cout << b[count];count++;}// cout << count;for(int i=0;i<count-1;i++){for(int j=0;j<count-1-i;j++){if(b[j]>b[j+1]){tmp = b[j];b[j]=b[j+1];b[j+1]=tmp;}}} // for(int i=0;i<count;i++){//     cout << b[i];// }for(int z=0;z<count;z++){if(a[z]!=b[z]){flag = 0;break;}}if(flag==1) cout << "YES";else cout << "NO";return 0;
}

我的这个思路感觉有点繁琐,所以,看了一下评论区的思路。

  • 每个数字出现的次数要相等
  • 用a、b两个数组分别记录两个数中每个数字(0~9)出现的个数,再比较a、b是否相等。

 用这个思路解决,代码行数大大减少(但是对于我来说,很难想到,现在慢慢学吧。):

#include<bits/stdc++.h> using namespace std;int main( )
{int n,a[10] = {0},b[10]={0};cin >> n;int q=n,m = 2 * n,p=m;int flag = 1;while(n!=0){int i=n%10;a[i]+=1;n/=10;}while(m!=0){int i = m%10;b[i]+=1;m/=10;}for(int z=0;z<10;z++){if(a[z]!=b[z]){flag = 0;break;}}if(flag==1) cout << "YES";else cout << "NO";return 0;
}

2、MT1176两个点的距离

给定笛卡尔平面上两个点的坐标,求它们之间的距离向上舍入为最接近的整数。

格式

输入格式:

输入整型,空格分隔

输出格式:

输出整型

样例 1

输入:

0 0 2 -2

输出:

3
相关知识点
1、笛卡尔平面

笛卡尔坐标系就是直角坐标系和斜坐标系的统称。

2、直角平面间两点的距离公式

    double a = pow((y2-y1),2);

    double b = pow((x2-x1),2);

    double l = sqrt(a+b);

实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{int x1,y1,x2,y2;cin >> x1 >> y1 >> x2 >> y2;double a = pow((y2-y1),2);double b = pow((x2-x1),2);double l = sqrt(a+b);printf("%.0f",l);// cout << l;return 0;
}

我没理解这个和选择结构有什么区别,不是输入输出类型的题吗。不理解~

3、MT1186do-while循环

请编写一个简单程序,从大到小输出所有小于n的正整数,直到0为止(不含0)。n从键盘输入

格式

输入格式:

输入整型数n

输出格式:

输出整型,空格分隔

样例 1

输入:

10

输出:

10 9 8 7 6 5 4 3 2 1
实现代码

do-while循环不常用,记录一下最基本的用法吧。

#include<bits/stdc++.h> using namespace std;int main( )
{int n;cin >> n;do{cout << n << " ";n--;}while(n>0);return 0;
}

do-while语句需要注意的是,while后面需要加一个分号“;”

除此之外,也要注意,循环的基本条件,注意不能写反了。

明天继续吧。

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

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

相关文章

MySQL之SQL的查询语句如何执行

文章目录 前言一、一条查询的SQL是如何执行的二、MySQL的“零件”们1.连接器2.查询缓存3.分析器4.优化器5.执行器 总结 前言 做了多年技术之后&#xff0c;技术更新换代太快&#xff0c;从我入行时候从单体架构到后面分布式SOA&#xff0c;再到微服务&#xff0c;从后端再到全…

Docker搭建MySQL8主从复制

之前文章我们了解了面试官&#xff1a;说一说Binlog是怎么实现的&#xff0c;这里我们用Docker搭建主从复制环境。 docker安装主从MySQL 这里我们使用MySQL8.0.32版本&#xff1a; 主库配置 master.cnf //基础配置 [client] port3306 socket/var/run/mysqld/mysql.sock [m…

Java项目:基于SSM框架实现的教务管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm813基于SSM框架实现的教务管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#x…

Docker进阶篇-DockerFile

一、简介 Dockerfile是用来构建Docker镜像的文本文件&#xff0c;是由一条条构建镜像所需的指令和参数构成的脚 本。 构建步骤&#xff1a; 1、编写Dockerfile文件 2、docker build命令构建镜像 3、docker run依镜像运行容器实例 二、Docker构建过程解析 1、Dockerfile…

2024美国大学生数学建模C题网球运动中的势头详解思路+具体代码

2024美国大学生数学建模C题网球运动中的势头详解思路具体代码 E题数据已更新&#xff0c;做E题的小伙伴推荐看看博主的E题解析文章。那么废话不多说我们继续来做C题。 赛题分析 我们先阅题&#xff1a; 在2023年温布尔登男单决赛中&#xff0c;20岁的西班牙新星卡洛斯阿尔卡…

/home/zzcg/BJCAROOT/ 把/换成File.separator

在Java中&#xff0c;File.separator 是系统相关的默认名称分隔符。对于UNIX系统&#xff0c;它是 /&#xff0c;对于Windows&#xff0c;它是 \。 所以&#xff0c;如果你想将字符串 "/home/zzcg/BJCAROOT/" 中的 / 替换为 File.separator&#xff0c;你可以这样做…

数据结构—动态查找

动态查找介绍 1. 动态查找的引入&#xff1a;当查找表以线性表的形式组织时&#xff0c;若对查找表进行插入、删除或排序操作&#xff0c;就必须移动大量的记录&#xff0c;当记录数很多时&#xff0c;这种移动的代价很大。 2. 动态查找表的设计思想&#xff1a;表结构本身是…

Midjourney新功能介绍:风格参考(Style References)详解

引言 对于追求创意和一致性的艺术家和设计师们来说&#xff0c;Midjourney的最新功能——风格参考&#xff08;Style References&#xff09;&#xff0c;无疑是一个激动人心的消息。这项测试算法的发布&#xff0c;让我们得以通过简单的URL引用&#xff0c;将特定的风格应用于…

专项审计或鉴证报告

经具有资质并符合《工作指引》相关条件的中介机构出具的企业近三个会计年度&#xff08;实际年限不足三年的按实际经营年限&#xff09;研究开发费用专项审计或鉴证报告&#xff08;附研究开发活动说明材料&#xff09;、近一个会计年度高新技术产品&#xff08;服务&#xff0…

【论文速览_01】Awesome Few Shot Segmentation论文

Awesome Few Shot Segmentation Awesome Few Shot Segmentation论文CVPR 2023Hierarchical Dense Correlation Distillation for Few-Shot Segmentation文章内容 MIANet: Aggregating Unbiased Instance and General Information for Few-Shot Semantic Segmentation文章内容 I…

探讨深浅拷贝在js加密中的运用

深浅拷贝是JavaScript中常用的概念&#xff0c;用于复制对象或数组。它们在处理数据时有不同的用途&#xff0c;适用于不同的场景。在本文中&#xff0c;我们将详细介绍深浅拷贝的概念&#xff0c;提供案例代码&#xff0c;并探讨它们在JavaScript中的应用场景&#xff0c;以及…

linux如何知道运行的进程的运行目录,就可以了解自己的程序是否在运行。

目 录 一、背景 二、找到运行的进程的运行目录的方法 1、使用ps命令结合grep命令 2. 使用pgrep命令结合readlink命令 一、背景 在实际应用中&#xff0c;发现Linux中运行了多个nginx&#xff0c;不知道自己的应用程序的Nginx是否在正常运行&#xff1f; 如果知道这…

学习python第五天

一.判断语句 yourAge 20 myAge 18if yourAge > myAge:print("你的年龄比我大")""" 输出 你的年龄比我大 """ 1.冒号 判断语句的固定格式&#xff0c;用来表示这行判断条件的结束。 2.四个空格&#xff08;缩进&#xff09; …

MySQL原理(一)架构组成之逻辑模块(1)组成

总的来说&#xff0c;MySQL可以看成是二层架构&#xff0c;第一层我们通常叫做SQL Layer&#xff0c;在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的&#xff0c;包括权限判断&#xff0c;sql解析&#xff0c;执行计划优化&#xff0c;query cache的处理等等&…

中二少年工具箱(PC端)简介

同学们可以私信我加入学习群&#xff01; 正文开始 简介一、功能模块1.node版本管理工具 总结 简介 中二少年开发的中二少年工具箱&#xff0c;相信博主&#xff0c;功能不孬。 辅助自己开发工作&#xff0c;帮助新人快速入门&#xff0c;提供交互式文档辅助学习……如果还不…

CSS3:最新特性和实例教程

今天简单复习一下css3的相关特性吧。 一&#xff1a;响应式设计 CSS3引入了媒体查询&#xff08;Media Queries&#xff09;和弹性盒子布局&#xff08;Flexbox&#xff09;等特性&#xff0c;使得响应式设计变得更加容易。媒体查询可以根据设备的屏幕大小、分辨率等属性来应…

拓展欧几里得法求逆元

板子&#xff1a; x即为最终答案&#xff0c;x可能为负数&#xff0c;加模数即可 乘法逆元 - OI Wiki (oi-wiki.org) void exgcd(int a, int b, int& x, int& y) {if (b 0) {x 1, y 0;return;}exgcd(b, a % b, y, x);y - a / b * x; } 使用: exgcd(a, n 1, x,…

什么是ISO21434网络安全中的汽车网络?-亚远景

在ISO 21434标准中&#xff0c;汽车网络指的是车辆内部和车辆与外部之间的所有电子控制单元&#xff08;ECU&#xff09;之间的连接和通信。这些电子控制单元包括车辆内部的各种系统和功能&#xff0c;例如引擎控制、刹车系统、驾驶辅助系统、娱乐系统等。 具体来说&#xff0c…

空间计算时代加速到来,需要的不只是苹果

近年来&#xff0c;科技行业一直在期待“寒武纪”时刻。伴随技术革命的深入推进&#xff0c;所有厂商都预感新的时代即将到来&#xff0c;并期待自己成为那个引爆点&#xff0c;轻轻一触&#xff0c;推开一扇新的未来之门。 今年开年&#xff0c;苹果就为科技圈锚定了一个可能…

学习C语言的第31天

全局函数和静态函数 全局函数 1、全局函数在作用域中唯一的&#xff1b; 2、作用域&#xff1a;在整个项目中使用文件中使用&#xff1b; 3、函数可以调用自己成为递归函数&#xff1b; #include<stdio.h> void bubblesort(int arr[],int len) {for(int i0;i<len…