当前位置: 首页 > news >正文

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

        前言:在部分大厂笔试时经常会使用OJ题目,这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解,希望对各位读者有所帮助。

题目来自牛客网,欢迎各位积极挑战:

HJ73:计算日期到天数转换_牛客网

JZ17:打印从1到最大的n位数_牛客网

HJ76:尼科彻斯定理_牛客网

目录

HJ73 计算日期到天数转换

题目相关消息

题目描述

输入描述 

输出描述 

示例

 分析问题解决思路

具体实现细节: 

 完整代码实现

JZ17 打印从1到最大的n位数

题目相关消息

描述

示例

分析问题解决思路

具体实现细节

 完整代码实现

HJ76 尼科彻斯定理

题目相关信息

题目描述

 输入描述

输出描述

示例 

分析问题解决思路 

具体实现细节

完整代码实现


HJ73 计算日期到天数转换

题目相关消息

题目描述

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

进阶:时间复杂度: O(n) ,空间复杂度: O(1) 

输入描述 

输入一行,每行空格分割,分别是年,月,日

输出描述 

输出是这一年的第几天

示例

输入:2012 12 31

输出:366

输入:1982 3 4

输出:63

 分析问题解决思路

题目让我们输出有多少天,只要解决了以下俩个小问题,问题就迎刃而解了

  1. 闰年的情况,我们需要判断输入是否是闰年,在闰年内,2月是29天,这是与正常平年不同的情况,因此我们需要设计和函数来判断是否是闰年
  2. 我们在判断的时候应该使用累加的思想,从1月累加到目标月,但是值得注意的一点是,目标月不能直接加当前月份总的天数,应该加上用户输入的天数

具体实现细节: 

        首先我们需要先设计一个判断闰年的函数,如果是闰年就返回1,不是就返回0,方便后续进行调用判断:

int judgeleapyear(int year)
{if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){return 1;}elsereturn 0;
}

        主函数方面,我们定义一个整形变量 days 来记录从这一年的第一天到现在一共有多少天,定义 year, month, day三个整形变量分别来记录用户输入的值,从一月开始遍历到目标月,不包含目标月,如果是大月 days 就加31,如果是小月就加30,另外在2月的时候,使用一个 if 语句来判断当前 2 月有多少天

        //大月if ((months == 1) || (months == 3) || (months == 5) || (months == 7) || (months == 8) || (months == 10) || (months == 12)){days += 31;}//小月else if ((months == 4) || (months == 6) || (months == 9) || (months == 11)){days += 30;}//二月else{//润年if (ret == 1){days += 29;}//平年else{days += 28;}}

 完整代码实现

//HJ73
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int judgeleapyear(int year)
{if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){return 1;}elsereturn 0;
}int main()
{int year = 0;int month = 0;int day = 0;int days = 0;scanf("%d %d %d", &year, &month, &day);//判断是否是闰年int ret = judgeleapyear(year);//从一月加到目标月for (int months = 1; months < month; months++){//大月if ((months == 1) || (months == 3) || (months == 5) || (months == 7) || (months == 8) || (months == 10) || (months == 12)){days += 31;}//小月else if ((months == 4) || (months == 6) || (months == 9) || (months == 11)){days += 30;}//二月else{//润年if (ret == 1){days += 29;}//平年else{days += 28;}}}days += day;printf("%d", days);return 0;
}

JZ17 打印从1到最大的n位数

题目相关消息

描述

        输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

  1.  用返回一个整数列表来代替打印
  2.  n 为正整数,0 < n <= 5

示例

输入:1

返回值:[1,2,3,4,5,6,7,8,9]

        注意,这道题目是接口题,我们只需要完善题目给出的函数就可以了,将需要返回的值返回就完成了

int* printNumbers(int n, int* returnSize)
{}

分析问题解决思路

        首先,我们需要明确一件事,这道题是接口题,我们不能像普通的 ACM 模式的题那样写个循环直接打印,我们需要将数据放在一块空间内,然后将其返回

        既然是要放在空间内,那我们就使用 malloc 函数来动态开辟空间,最后在这些空间内逐个赋值就可以了

具体实现细节

        首先我们得先明确数值的范围,如下所示的过程中,我们不难发现,这是次方的关系,也就是说 10^n-1 就是数值的最大值

  • 1 位数的数值就是 1~9
  • 2 位数的数值就是 1~99
  • 3 位数的数值就是 1~999
  • 4 位数的数值就是 1~9999

        那么在这里我们就使用 <math.h> 头文件中的库函数 pow 来实现次方的效果,这样我们就获得了数值的大小范围

    //返回数组元素的个数*returnSize = pow(10, n) - 1;

        接下来就是动态分配空间,在这里需要注意的是要进行强制类型转化,不然会因为前后类型不一致导致 bug,一个整形大小是 sizeof(int),一共有 *returnsize 个整形

     //动态分配空间int* arr = (int*)malloc(*returnSize * sizeof(int));//malloc(字节数)

最后赋值就非常简单了,使用 for 循环实现就可以了

    //赋值for (int i = 0; i < *returnSize; ++i){*(arr + i) = i + 1;}

 完整代码实现

int* printNumbers(int n, int* returnSize)
{//返回数组元素的个数*returnSize = pow(10, n) - 1;//动态分配空间int* arr = (int*)malloc(*returnSize * sizeof(int));//malloc(字节数)//赋值for (int i = 0; i < *returnSize; ++i){*(arr + i) = i + 1;}//返回return arr;
}

HJ76 尼科彻斯定理

题目相关信息

题目描述

验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和

例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出

数据范围: 1≤m≤100 

进阶:时间复杂度:O(m) ,空间复杂度:O(1) 

 输入描述

输入一个int整数

输出描述

输出分解后的string

示例 

输入:6

输出:31+33+35+37+39+41

分析问题解决思路 

首先,我们必须得理解这个题目背后的数学原理,我们举例如下

        我们会发现,在多项式中的第一项和最后一项是有迹可循的,我们对于第一项和最后一项的总结如下

  1. 第一项:(n-1)^2+((n-1)-1)+2
  2. 最后一项:n^2+(n-1)

具体实现细节

我们先使用俩个变量来找到刚才所描述的第一项和最后一项

	int m_first = 0;int m_end = 0;m_first = (m - 1) * (m - 1) + (((m - 1) - 1) + 2);m_end = (m * m) + (m - 1);

        在找到第一项后,我们就可以使用遍历累加来打印了,在尼科彻斯定理表示的多项式中,多项式的数量要表达的整数m是一样的,都是m,基于此,我们就可以使用循环了,每一次都打印一个奇数,然后在让这个奇数加 2,最后再直接打印最后一项

	for (int i = 0; i < (m - 1); i++){printf("%d+", m_first);m_first += 2;}printf("%d", m_end);

完整代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>void math_N(int m)
{int m_first = 0;int m_end = 0;m_first = (m - 1) * (m - 1) + (((m - 1) - 1) + 2);m_end = (m * m) + (m - 1);for (int i = 0; i < (m - 1); i++){printf("%d+", m_first);m_first += 2;}printf("%d", m_end);
}int main()
{int m = 0;scanf("%d", &m);math_N(m);return 0;
}

本次分享就到此结束了,希望我的分享对您有所帮助

相关文章:

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

前言&#xff1a;在部分大厂笔试时经常会使用OJ题目&#xff0c;这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解&#xff0c;希望对各位读者有所帮助。 题目来自牛客网&#xff0c;欢迎各位积极挑战&#xff1a; HJ73:计算日期到天数转换_牛客网 JZ17:打印…...

混合动力汽车耐久测试

一 背景 整车厂可通过发动机和电机驱动的结合为多款车型提供混合动力驱动技术。汽车集成电机驱动可大大减少二氧化碳的排放&#xff0c;不仅如此&#xff0c;全电动驱动或混合动力驱动的汽车还将使用户体验到更好的驾驶感受&#xff0c;且这种汽车可通过电动机来实现更快的加速…...

useRef 定义的 ref 在控制台可以打印但是页面不生效?

useRef 是一个 React Hook&#xff0c;它能让你引用一个不需要渲染的值。 点击计时器 点击按钮后在控制台可以打印但是页面不生效。 useRef 返回的值在函数组件中不会自动触发重新渲染&#xff0c;所以控制台可以显示变化而按钮上无法显示 ref.current的变化。 import { use…...

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,动态数组(重点推荐))七(129)

需求&#xff1a;前端根据后端的返回数据&#xff1a;画统计图&#xff1b; 说明&#xff1a; 1.X轴为地域&#xff0c;Y轴为地域出现的次数&#xff1b; 2. 动态展示&#xff08;有地域展示&#xff0c;没有不展示&#xff0c;且高低排序&#xff09; Demo案例&#xff1a; …...

Cell Reports | 揭开METTL14在介导m6A修饰中的神秘面纱

m6A被认为是最丰富的mRNA修饰&#xff0c;广泛分布在大多数真核生物中&#xff0c;包括哺乳动物、植物、昆虫、酵母和某些病毒。m6A修饰的沉积和去除之间的动态平衡对于正常的生物过程和发育至关重要&#xff0c;如失调通常与癌症等疾病有关。m6A修饰由m6A甲基转移酶复合物&…...

297. 二叉树的序列化与反序列化

题目描述 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传输到另一个计算机环境&#xff0c;采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序…...

肖sir__设计测试用例方法之边界值03_(黑盒测试)

设计测试用例方法之边界值 边界点定义 上点&#xff1a;边界上的点 离点&#xff1a;离上点最近的点&#xff08;即上点左右两边最邻近的点&#xff09; 内点&#xff1a;在域范围内的点 案例&#xff1a;qq号&#xff1a;5-12位 闭区间&#xff1a; 离点&#xff1a;5 位 &…...

功能测试常用的测试用例大全

登录、添加、删除、查询模块是我们经常遇到的&#xff0c;这些模块的测试点该如何考虑 1)登录 ① 用户名和密码都符合要求(格式上的要求) ② 用户名和密码都不符合要求(格式上的要求) ③ 用户名符合要求&#xff0c;密码不符合要求(格式上的要求) ④ 密码符合要求&#xff0c;…...

css利用flex分配剩余高度出现子组件溢出问题

1.利用flex分配剩余高度/宽度 情景&#xff1a;父组件高度一定&#xff0c;子组件中&#xff0c;其他子组件高度固定&#xff0c;一个子组件高度不确定&#xff08;页面滚动列表&#xff09; .father{display: flex;flex-direction: column;.son1{height: 200px;}.son2{//或 …...

Java中的网络编程------基于Socket的TCP编程和基于UDP的网络编程,netstat指令

Socket 在Java中&#xff0c;Socket是一种用于网络通信的编程接口&#xff0c;它允许不同计算机之间的程序进行数据交换和通信。Socket使得网络应用程序能够通过TCP或UDP协议在不同主机之间建立连接、发送数据和接收数据。以下是Socket的基本介绍&#xff1a; Socket类型&…...

【【STM32-29正点原子版本串口发送传输实验】

STM32-29正点原子版本串口发送传输实验 通过串口接收或发送一个字符 例程目的 开发板上我们接入的是实现异步通信的UART接口 USB转串口原理图 我们一步步分析 PA9是串口1 的发送引脚 PA10是串口1 的接受引脚 。因为我们现在只是用到异步收发器功能&#xff0c;所以我们现…...

【面试题精讲】什么是websocket?如何与前端通信?

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 系列文章地址 什么是WebSocket&#xff1f; WebSocket是一种在Web应用程序中实现双向通信的协议。它允许在客户端和服务器之间建立持久…...

unity tolua热更新框架教程(2)

Lua启动流程 增加脚本luamain&#xff0c;继承luaclient 建立第一个场景GameMain&#xff0c;在对象GameMain挂载脚本LuaMain&#xff0c;启动场景 看到打印&#xff0c;lua被成功加载 lua入口及调用堆栈 这里会执行main.lua文件的main函数 C#接口导出 在此处配置C#导出的代码 …...

【0904作业】QT 完成登陆界面跳转到聊天室+完成学生管理系统的查找和删除功能

一、完成登陆界面跳转到聊天室 1> 项目结构 2> 源码 ① .pro ②main #include "mywnd.h" #include"chatCli.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MyWnd w;w.show();Form f;QObject::co…...

ceph源码阅读 buffer

ceph::buffer是ceph非常底层的实现&#xff0c;负责管理ceph的内存。ceph::buffer的设计较为复杂&#xff0c;但本身没有任何内容&#xff0c;主要包含buffer::list、buffer::ptr、buffer::hash。这三个类都定义在src/include/buffer.h和src/common/http://buffer.cc中。 buffe…...

基本介绍——数据挖掘

1.数据挖掘的定义 数据挖掘是采用数学的、统计的、人工智能和神经网络等领域的科学方法&#xff0c;如记忆推理、聚类分析、关联分析、决策树、神经网络、基因算法等技术&#xff0c;从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势&#xff0c;并…...

Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错

当使用 Navicat 连接 PostgreSQL 数据库时出现 ‘datlastsysoid does not exist’ 的错误报错&#xff0c;这可能是由于 Navicat 版本与 PostgreSQL 版本不兼容所致。 这是因为在较新的 PostgreSQL 版本中移除了 ‘datlastsysoid’ 列&#xff0c;但可能较旧版本的 Navicat 尚…...

冯诺依曼体系结构/什么是OS?

一、体系结构图 示意图 控制器可以控制其它4个硬件&#xff0c;四个硬件直接可以进行数据传输。 5大硬件 但是这些个体需要用“线”连接。 为什么要有存储器&#xff1f; 如果没有&#xff0c;实际速度则为输入、输出设备的速度。 加上后&#xff0c;变为内存的速度。&#…...

SD卡/TF卡简记

文章目录 MicroSD卡与SD卡关系与区别对比NM卡、XQD卡、CFexpress卡SD规格标识FAQ拍摄1080p或2k视频需要什么速度的sd卡&#xff1f;拍摄4k视频需要什么速度的sd卡&#xff1f;拍摄8k视频需要什么速度的sd卡&#xff1f; MicroSD卡与SD卡关系与区别 MicroSD卡原名为Trans-flash…...

Dockerfile COPY的奇怪行为:自动解包一级目录

记录一下今天遇到的坑&#xff1a;Dockerfile 这两天在部署项目的时候&#xff0c;新加进去了一个驱动&#xff0c;需要将2个文件夹以及1个文件COPY进镜像&#xff0c;大刀阔斧一个Dockerfile就写完了&#xff0c;结果COPY进去的文件有问题&#xff0c;Dockerfile的内容如下&am…...

【每日一题Day311】LC1761一个图中连通三元组的最小度数 | 枚举

一个图中连通三元组的最小度数【LC1761】 给你一个无向图&#xff0c;整数 n 表示图中节点的数目&#xff0c;edges 数组表示图中的边&#xff0c;其中 edges[i] [ui, vi] &#xff0c;表示 ui 和 vi 之间有一条无向边。 一个 连通三元组 指的是 三个 节点组成的集合且这三个点…...

前端日期减一天的笑话

vue日期减一天 给大家讲一个真实的笑话。最近做的一个项目&#xff0c;要统计不同年月日期的关联交易数量&#xff0c;由于和银行内数据对接取得数据都是T-1的&#xff0c;所以在首页根据日期统计一些交易数据量时默认是统计昨日的数据量。所以当时和前端约定好的让前端的妹子做…...

高效能,一键批量剪辑,AI智剪让创作更轻松

在今天的数字化时代&#xff0c;视频制作已经成为各种行业和领域的必备技能。然而&#xff0c;视频剪辑过程往往繁琐且耗时&#xff0c;大大降低了我们的工作效率。幸运的是&#xff0c;随着人工智能技术的发展&#xff0c;我们有了新的解决方案——AI智剪软件。 AI智剪软件&am…...

手写Mybatis:第15章-返回Insert操作自增索引值

文章目录 一、目标&#xff1a;Insert自增索引值二、设计&#xff1a;Insert自增索引值三、实现&#xff1a;Insert自增索引值3.1 工程结构3.2 Insert自增索引值类图3.3 修改执行器3.3.1 修改执行器接口3.3.2 抽象执行器基类 3.4 键值生成器3.4.1 键值生成器接口3.4.2 不用键值…...

【数据结构】动态数组(vector)的基本操作,包括插入、删除、扩容、输出、释放内存等。以下是代码的解释和注释:

这段C代码实现了一个动态数组&#xff08;vector&#xff09;的基本操作&#xff0c;包括插入、删除、扩容、输出、释放内存等。以下是代码的解释和注释&#xff1a; // 引入标准输入输出库和标准库函数&#xff0c;用于后续的内存分配和打印输出等操作 #include <stdio.…...

[unity]三角形顶点顺序

序 详见官方文档&#xff1a;Unity - Manual: Mesh data (unity3d.com) Topology&#xff1a;拓扑结构 翻译&#xff1a; 拓扑描述网格具有的面类型。 网格的拓扑定义了索引缓冲区的结构&#xff0c;索引缓冲区又描述了顶点位置如何组合成面。每种类型的拓扑都使用索引数组中…...

【python爬虫】14.Scrapy框架讲解

文章目录 前言Scrapy是什么Scrapy的结构Scrapy的工作原理 Scrapy的用法明确目标与分析过程代码实现——创建项目代码实现——编辑爬虫代码实现——定义数据代码实操——设置代码实操——运行 复习 前言 前两关&#xff0c;我们学习了能提升爬虫速度的进阶知识——协程&#xf…...

功率放大器主要作用是什么呢

功率放大器是一种电子设备&#xff0c;主要作用是将输入信号的功率增加到更高的水平&#xff0c;以便能够驱动高功率负载。在许多应用中&#xff0c;信号源产生的信号往往具有较低的功率&#xff0c;无法直接满足一些要求较高的设备或系统的需求。而功率放大器则可以增强信号的…...

SpringBoot ApplicationEvent详解

ApplicationStartingEvent 阶段 LoggingApplicationListener#onApplicationStartingEvent 初始化日志工厂,LoggingSystemFactory接口&#xff0c;可以通过spring.factories进行定制 可以通过System.setProperty("org.springframework.boot.logging.LoggingSystem",&q…...

WebSocket 报java.io.IOException: 远程主机强迫关闭了一个现有的连接。

在客户端强制关闭时&#xff0c;或者窗口强制关闭时&#xff0c;后端session没有关闭。 有时还会报&#xff1a;java.io.EOFException: 这个异常 前端心跳没有收到信息&#xff0c;还在心跳。 CloseReason close new CloseReason(CloseReason.CloseCodes.NORMAL_CLOSURE, &…...

linux下wordpress建站/软文营销是什么意思

大家好&#xff0c;这里是捷径手机宝典&#xff0c;我是阿轲iOS 12.4 在历经了 7个 beta测试版后&#xff0c;终于在今天凌晨发布了正式版&#xff0c;不出意外的话&#xff0c;这应该是iOS12系列的最后一个版本iOS12.4正式版更新内容包括修复图片重启BUG过滤未知发件人功能优化…...

网站的成功案例/达州seo

昨天是一个值得庆祝的日子&#xff0c;妈妈出院了。昨天晚上忙着看纪录片《圆明园》&#xff0c;所以没写下什么。 到现在还记得95年的那个夏天&#xff0c;我住在姐姐家&#xff0c;后来妈妈住院了&#xff0c;得了风心病&#xff0c;当时插了氧气&#xff0c;很严重。到冬天的…...

汽车网站建设公司哪家好/竞价推广哪家公司好

得到这个后就简单了 用矩阵快速幂即可 递推...

网站的seo/新闻发布稿

骑士编年史初始怎么刷&#xff1f;安卓机不root怎么刷初始&#xff1f;来看看9k9k小编rayxx带来的骑士编年史非root刷初始方法。开始第一步前请确认该文件夹的属性大小&#xff0c;在正常情况下该文件夹大小应该在1.3g以上。如果出现大小只有以k为单位或者100m以下的情况&#…...

济南资金盘网站开发公司靠谱吗/厦门网站综合优化贵吗

在对数据进行序列化和反序列化是常见的数据操作&#xff0c;Python提供了两个模块方便开发者实现数据的序列化操作&#xff0c;即 json 模块和 pickle 模块。这两个模块主要区别如下&#xff1a; json 是一个文本序列化格式&#xff0c;而 pickle 是一个二进制序列化格式&…...

营销型网站建设服务电话/西地那非片能延时多久

深入体验C 语言项目开发薛小龙清华大学出版社 2011 07本丛书的主要编写人员有陈强、李佐彬、李淑芳、蒋凯、王梦、王书鹏、张子言、张建敏、陈德春、李藏、关立勋、秦雪薇、薛多鸯、李强、刘海洋、唐凯、吴善财、王石磊、习国庆、张家春、扶松柏、杨靖字、王东华、罗红仙、曹文…...