杭电oj_2058——The sum problem(java实现)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2058
思路:等差数列公式变形:sum = a1 * len + len *(len -1)/2
抽象成一句话就是本题的思路:根据数列的长度和数列的和就可以算出首项,因为知道长度,所以区间就出来了(看了好多博客,都没说清楚,晕我一大天……)
然后由式子的变形(2*a1 + len -1)*len = 2 *sum可得len绝对小于Sqrt(2*sum),因为a1>=1故len-1+2*a1>len(模糊比较即可)
下面判断就用一个双重确定就可以了,因为double转long会丢失精度,所以如果转换之后依然相等,就说明找到了,输出即可
source code:
package hduoj; import java.util.Scanner; public class hdoj_2058 {
/**
* 注释掉的是穷举法,超时了
* 需要使用的是等差数列的公式sum = 2 * len +len(len-1)/2
*/
// public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// while(true){
// long N = sc.nextLong();
// long M = sc.nextLong();
// if(N==0||M==0) break;
// HashMap<Long,Long> map = new HashMap<>();
// long start = 0;
//// long end = 0;
// for(long i = 1;i<M/2;++i){
// long sum = i;
// start = i;
// long j ;
// for(j = i+1;j<Math.sqrt(M);++j){
// sum += j;
// if(sum==M){
// map.put(start,j);
// }
// if(sum>M) break;
// }
// }
// if(map.size()==0) System.out.println("["+M+","+M+"]");
// else {
// map.put(M,M);
// for(Map.Entry<Long,Long> each : map.entrySet()){
// System.out.println("["+each.getKey()+","+each.getValue()+"]");
// }
// }
// }
// }
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
long N = sc.nextLong();
long M = sc.nextLong();
if(N==0||M==0) break;
long len = (long)Math.sqrt(2*M) + 1;//此处加一是因为下面的循环判断条件会减一个一,如果不加就会少一个长度
while(len--!=1){
long start = (2*M/len + 1 - len)/2;
if((2*start + len -1)*len/2 == M){
System.out.println("["+start+","+(start + len -1)+"]");
}
}
System.out.println();
}
}
}
代码已经ac
希望对大家有所帮助
以上
杭电oj_2058——The sum problem(java实现)的更多相关文章
- 杭电oj 4004---The Frog Games java解法
import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...
- 杭电oj An easy problem
</pre><h1 style="color: rgb(26, 92, 200);">An easy problem</h1><stron ...
- 杭电 1016 Prime Ring Problem
Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 杭电 1003 Max Sum (动态规划)
参考:https://www.cnblogs.com/yexiaozi/p/5749338.html #include <iostream> #include <cstdio> ...
- 杭电 5053 the Sum of Cube(求区间内的立方和)打表法
Description A range is given, the begin and the end are both integers. You should sum the cube of al ...
- 杭电1003 Max Sum 【连续子序列求最大和】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...
- 杭电1003 Max Sum TLE
这一题目是要求连续子序列的最大和,所以在看到题目的一瞬间就想到的是把所有情况列举出来,再两个两个的比较,取最大的(即为更新最大值的意思),这样的思路很简单,但是会超时,时间复杂度为O(n^3),因为有 ...
- 杭电oj_1713——相遇周期(java实现)
question:相遇周期 思路: 首先将两个分数化为最简形式(也就是分子分母同时除以最大公约数) 然后题意是要求两个分数的最小公倍数 借助以下两个公式,就可以求出结果 1.最小公倍数*最大公约数 = ...
- 杭电 1002 A + B Problem II【大数相加】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 解题思路:就是把大的数用数组存放起来,像小学的时候用竖式加法来算两个数相加那样算: 反思:思路很 ...
随机推荐
- Spring(七)核心容器 - 钩子接口
目录 前言 1.Aware 系列接口 2.InitializingBean 3.BeanPostProcessor 4.BeanFactoryPostProcessor 5.ImportSelecto ...
- 在C#下使用TensorFlow.NET训练自己的数据集
在C#下使用TensorFlow.NET训练自己的数据集 今天,我结合代码来详细介绍如何使用 SciSharp STACK 的 TensorFlow.NET 来训练CNN模型,该模型主要实现 图像的分 ...
- C语言编写程序的大小端问题
有时候,用C语言写程序需要知道大端模式还是小端模式,,由于寄存器大于一个字节(8bit),就会存在一个字节安排的问题,例如(16bit)的short型,(32bit)的int型,具体需要看具体的编译器 ...
- SQL server 游标用法
declare @EmpCode varchar(50), @EmpName varchar(50), @EmpAddress varchar(200);declare curEmployee cur ...
- RHEL6 yum本地源配置
RHEL6 yum本地源配置 将RHEL6 的iso上传到/file1/xxx 新建目录/file1/xxx/mnt,将iso挂载到mnt目录 mount rhel-server-6.3-x86_64 ...
- PTA甲级B1061 Dating
目录 B1061 Dating (20分) 题目原文 Input Specification: Output Specification: Sample Input: Sample Output: 生 ...
- Python的入门级试用(简明教程)
声明:借鉴Python 简明教程 用 Python 编写的传统的 'Hello World' 程序.使用 Python 运行你的程序的方法有两种:使用交互式解释器提示符或者使用源文件.现在我们来看一下 ...
- bootstrap 兼容 IE8
在 html 中引用 <!-- bootstrap 兼容 IE8 --> <script src="../../jsapi/js/html5shiv.min.js" ...
- [转载]Ubuntu 使用Compiz配置炫酷3D桌面
原文地址 个人引言: 这个Compiz使用与我的这篇Blog:打摆不顺利?是你没看这篇!相互有联系.这个Compiz是打摆工具之一,可以把打摆窗口调成透明,这样机房监控拍下来的屏幕会是打摆窗口下面的某 ...
- 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理
本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...