2018网易春招数对编程题(暴力版和优化版)

【牛客网】——数对 题目描述: 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有多少个可能的数对。 输入正整数n和k,输出一个正整数表示可能的输出数量 分析:将x和y要满足的条件提取出来 1.x<=n且y<=n 2.x%y>=k 思路1:根据上述条件可以建立循环,遍历所有的数进行寻找,理论上可以完成,但效率过低 思路2:首先将x的可能取值范围.. 阅读详情

题目描述:
牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。

但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。

牛牛希望你能帮他计算一共有多少个可能的数对。

输入描述:

输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。

输出描述:

对于每个测试用例, 输出一个正整数表示可能的数对数量。

示例:输入 5 2  输出:7

说明:满足条件的数对有(2,3),(2,4),(2,5),(3,4),(3,5),(4,5),(5,3)

   先来看一下暴力版的 ,因为比较简单,所以就没什么注释了

import java.util.Scanner;
public class Main1 {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc=new Scanner(System.in);
		int count = 0;
		int n = sc.nextInt();
		int k = sc.nextInt();
			for(int x=0;x<=n;x++) {
				for(int y=1;y<=n;y++) {
					if(x%y>=k) {
						count++;
						System.out.println("分别为"+"("+x+","+y+")");
					}
				}
			}
			System.out.println("数对值为"+count);
			
	}
}

因为有时间限制,所以暴力版肯定是不能通过的,二重循环的复杂度为O(n^2),可以使用一重循环实现如下,

注释都在代码里了,就不额外说明了

import java.util.Scanner;
public class Main2 {
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		long count = 0;
		long n = sc.nextInt();
		long k = sc.nextInt();
		if(k==0) {
			count=n*n;
		}else {
			//由数学知识可知,除数>余数,又余数>=k,即除数>余数>=k,所以除数y>=k+1
			
			/*此时已经确定y的范围为[k+1,n],x为[1,n],将x分为n/y组
			 * x = [1,1……y-2,y],[y+1,……,2y-2,2y]……[……]……[……,n]
			 * 之所以这样分是为了在每个小区间上,每组第i个数%y的余数是i,这样x从1到n包含n/y个余数循环,每个余数循环中只有y-k个符合条件的。
			 * 最后剩下一个不完整的余数循环,判断这部分最大的余数是否大于k
			 */
			
			for(long y=k+1;y<=n;y++) {
				count+=(n/y)*(y-k);
				if(n%y>=k) {
					count+=n%y-k+1;
				}
			}
		}
		System.out.println("数值对数量为"+count);
	}
}

 

 

算法之暴力破解法(穷举法) 一,什么是暴力破解法? 暴力破解法,就是把所有条件,相关情况统统考虑进去,让计算机进行检索,指导得出与之所有条件符合的结果 (但是,暴力破解法对计算机资源耗费严重,如果条件太复杂,运算速度缓慢,为了解决这一问题,我们可以事先把与之不相关的条件进行限制,减少计算机的运算量) 把所有情况都给列出来了,蜜蜂每次到的点都有五种可能性,先确定了第一次跑的一种可能性,是第一个点,那么第二个点就不能出现第一... 阅读详情

相关推荐

18728 数对问题二

题目描述 Description 此题目与数对问题一的唯一区别为序列中元素的取值范围。 一个长度为N的正整数序列,现在需要计算出有多少对数字的差的绝对值为C。 注意只要位置不同就认为是不相同的数对。 输入格式 第一行,两个整数 N, C。(1=<N<=10000),(1=<C<=10000) 第二行,N个正整数a1…an。 ai为int范围内的正整数。 输出格式 仅一行,满...

Leo_zehualuo的博客 932

999瓶水一瓶毒药,10只小鼠,使用python暴力编程

1000只小鼠试毒问题的python代码

weixin_45069044的博客 412

暴力法编程

是冬令营培训资料。用暴力法编程。计算几何也是必要的知识。

c语言编程暴力是什么意思,(C语言代码)用笨办法暴力出来的,但是还是希望给大家一点思路上的启发...

#include int calc_factorial(int x)//计算某数阶乘{int i,sum = 1;for(i = 1; i <= x; i++){sum *= i;}return sum;}int calc_size(int x)//返回某数位数{int i = 10,j = 1;while(x >= i){i *= 10;j++;}return j;}int main...

weixin_35915828的博客 693

fibplus-8.0.0.zip

FIBPlus 是一套面向 Delphi / C++Builder 的 Firebird、InterBase 数据库访问组件,特点是直接走原生客户端 API,不经 BDE/ODBC,速度快且可控性强。8.0.0 版本主要适配 Delphi 2009 及以后的版本(Delphi 6–2007 需用 7.9.x),核心组件包括 TpFIBDatabase、TpFIBTransaction、TpFIBDataSet 等,支持精细事务管理、本地缓存、BLOB 处理和备份恢复等数据库服务。该库原为 Devrace 的商业组件,现由社区在 GitHub 的 madorin/fibplus 项目开源维护,建议从官方仓库获取源码而非第三方网盘压缩包。安装时解压后用对应版本的工程组(10.4+ 统一为 `FIB.groupproj`)Build 全部包,再 Install `dclFIB` 并在 Library 路径加入 Source 目录即可。新项目中若需官方技术支持,也可考虑 FireDAC、IBDAC 等更现代的替代方案。

如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

RAM(随机存取存储器)是计算机系统中的一种主要存储器件,用于存储和读取数据。在RAM中,单端口RAM(Single-port RAM)和双端口RAM(Dual-port RAM)是两种常见的类型,双端口RAM又分为真双端口(True dual-port RAM)和伪双端口RAM(Simple dual-port RAM)。那么什么是单端口和双端口?又该如何区分真双端口和伪双端口?输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。

Loudrs的博客 1万+

算法问题求解

算法是计算机科学中的重要概念,它是解决特定问题的一系列步骤或指令。在计算机领域,有许多常见的算法问题这些只是计算机类算法中的一部分问题,还有许多其他的算法和应用场景。算法的设计和分析需要考虑时间复杂度、空间复杂度、数据结构等因素,以确保算法的高效性和正确性。在实际应用中,不同的算法可能适用于不同的场景,需要根据具体情况进行选择和优化。同时,不断研究和创新算法也是计算机科学发展的重要动力之一。

2401_89071291的博客 625

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

第二讲:暴力——模拟与搜索

c++暑假提升班

天才猴吼的博客 412

在Simulink中进行基于模拟信号数字化处理的仿真

模拟信号数字化处理通常包括以下几个步骤:采样、量化、编码以及数字信号处理(如滤波、变换等)。Simulink提供了丰富的模块库,可以方便地实现这些步骤,并支持对整个系统的实时仿真与调试。首先明确你的系统需求,比如输入信号类型(正弦波、方波等)、采样率、需要执行的数字信号处理操作(低通滤波、频谱分析等)。假设我们需要处理一个50Hz的正弦波信号,采样率为1kHz,并希望对该信号进行低通滤波以去除高频噪声。本文介绍了如何在Simulink中进行基于模拟信号数字化处理的仿真。

xiaoheshang_123的博客 623

从零开始的立绘拆包教程

蓝毒小天使天下第一! 本文拆包教程不限于明日方舟,在后面也会给出其他手游的拆包教程,例如少女前线 首先拆包最简单的无非就是拆取游戏资源,例如游戏立绘,音频,视频等,再深层次一点有拆取游戏配置文件,apk反编译得到部分源码 在本文,我们只介绍拆取游戏资源和对游戏资源的后期处理(因为另外两个讲道理我也没太搞懂,虽然可以提取游戏配置文件,但似乎大部分重要的数据都有加密,反编译出来的源码也只是部分,...

Conyrol的博客 9万+

牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有,,,

题目描述 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有多少个可能的数对。 输入描述: 输入包括两个正整数n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。 输出描述: 对于每个测试用例, 输出一个正整数表示可能...

qq_29462849的博客 4431

昇腾AI处理器Ascend C编程:从C/C++基础到高性能算子开发实战

异构计算是提升AI算力效率的核心技术,通过在CPU之外引入专用处理器(如GPU、NPU)协同工作,实现大规模并行计算。其原理在于将计算密集型任务卸载到专用硬件,利用其高并行架构加速处理。技术价值在于突破传统CPU的算力瓶颈,为深度学习训练与推理提供强大动力,广泛应用于模型部署、科学计算和高性能计算场景。本文聚焦昇腾AI处理器的原生编程语言Ascend C,它基于C/C++标准扩展,通过显式内存管理和任务并行模型,充分发挥达芬奇架构中Cube与Vector单元的性能。针对CANN算子开发,文章详解了从环境搭建

weixin_34411563的博客 365

自用笔记16——暴力编程

bool checkPossibility(int* nums, int numsSize){ int i=0,j=0; if(numsSize==5 && nums[0]==1 && nums[1]==2 && nums[2]==5 && nums[3]!=4) return true; if...

Rye_dt的博客 368

《UDS协议从入门到精通》系列——图解0x22:通过ID读数据

如何向车辆ECU通过DID写入数据?有哪些注意事项?图解+示例带你快速上手0x22服务!!

车载系统攻城狮 8711

【系统架构设计师】2025年下半年真题论文回忆版及写作要点

本文摘要围绕云原生数据库、性能测试、无服务器架构和秒杀场景等关键技术进行论述。云原生数据库通过容器化、微服务和自动化运维实现弹性扩展;性能测试需要规划测试场景并关注响应时间等关键指标;无服务器架构以事件驱动为核心,简化开发流程;秒杀场景需组合运用扩容、缓存、限流等技术应对高并发。这些技术方案为构建现代高可用系统提供了重要参考。

数据知道的博客 6156

编程算法之暴力破解法

暴力破解法,就是把所有条件,相关情况统统考虑进去,让计算机进行检索运算,直到得出与之所有条件符合的结果。     但是,暴力破解对计算机资源耗费严重,如果条件太复杂,运算速度缓慢,为了解决这一问题,我们可以事先把与之不相关的条件进行限制,减少计算机的运算量。

太快的幸福,措手不及 2406

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

编程算法基础-暴力破解法

1.1   暴力破解法 鸡兔同笼 50头,120脚,鸡兔分别几只? /*鸡兔同笼 * 鸡兔同笼,头50,脚120 * 鸡兔几何? */ package ChickRabbit; public class ChickRabbit { public static void main(String[] args){ int chick; int rabb

u011925500的专栏 3666

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

集合

小易最近在数学课上学习到了集合的概念,集合有三个特征:1.确定性 2.互异性 3.无序性. 小易的老师给了小易这样一个集合: S = { p/q | w ≤ p ≤ x, y ≤ q ≤ z } 需要根据给定的w,x,y,z,求出集合中一共有多少个元素。小易才学习了集合还解决不了这个复杂的问题,需要你来帮助他。 输入描述: 输入包括一行: 一共4个整数分别是w(1 ≤ w ≤ x),x(1

小明的博客 2733

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

暴力程序心得

暴力 打表 拿分学习 C++不到1年的我屡次见识到了暴力这种 不正经 强大的方法,但是在吐槽之余,也不能否认暴力带给我们如春雨一般的滋润【啊呸】 题目地址:烤鸡【洛谷】 首先呢,我怀着渣渣的心用 搜索 做,做到后来脑袋炸了,代码也炸了。 之后,我们的主角——暴力闪亮登场!注意 稍后的两个代码是错误答案!1.20%暴力【加入了数组储存和位数归并】#include <cstdio> #incl

Athena_Oria的博客 880

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数对--网易

牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有多少个可能的数对。 输入描述:输入包括两个正整数n,k(1 &lt;= n &lt;= 10^5, 0 &lt;= k &lt;= n - 1)。输出描述:对于每个测试用例, 输出一个正整数表示可能的数对...

acsuperman的博客 989

新手入门编程需要掌握的几个暴力算法c/c++和方便的stl

我会将需要用到的一些主要的知识点放在算法介绍的旁边,并且我是以解决一个问题来介绍一个算法的,而不是直接介绍; 第一个:找一个数组里的最值 擂台法: const int inf=10e9; int main(){ int n; scanf("%d",&n); int min=inf,max=-inf;//将最大值和最小值设得足够小和足够大 while(n--){ int mid; scanf("%d",&mid); ..

weixin_62953519的博客 2146

网易2019实习生Java编程题

题1:平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。 如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。 请你计算出平面内重叠矩形数量最多的地方,有多少个矩形相互重叠。 思路:把坐标离散化之后直接统计(当时通过率90%) #include&lt;stdio.h&gt; #include&lt;a...

heihei 1708

网易2018春招(小Q数列,累计能被3整除的数列个数)

本人Java刚学不就,做这题大概花了有2个小时多点,代码仅供参考,如若有不足之处或需要改进的地方,还请各位支出.1.问题描述2.参考代码import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class ShuLie { /...

weixin_40708796的博客 510
上一篇: 利用三元运算符求1+2+3+...+n,要求不能使用乘,除,for ,while,if ,else ,switch,case (java语言实现)
下一篇: 如何理解HTTP协议的“无连接,无状态”特点?
Max_bin
博客等级 码龄10年 25粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值