hdu2058java
The sum problem
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 21555 Accepted Submission(s):
6320
calculate all the possible sub-sequences that the sum of the sub-sequence is
M.
two integers N, M( 1 <= N, M <= 1000000000).input ends with N = M =
0.
that its sum is M.The format is show in the sample below.print a blank line
after each test case.
/*import java.util.*;
class Main{
public static void main(String args[])
{Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{int n=cin.nextInt();
int m=cin.nextInt();
if(n==0&&m==0)
break;
for(int i=1;i<=n;i++)
{int sum=i;
int k=0,s=0,flag=0;
for(int j=i+1;j<=n;j++)
{ sum+=j;
if(sum==m)
{flag=1;
k=i;
s=j;
break;}
else if(sum>m)
{break;
}
}
if(flag==1)
System.out.println("["+k+","+s+"]");
}
if(n>=m)
System.out.println("["+m+","+m+"]");
System.out.println();
}
}
}*/
上面的那个代码会超时,下面的代码不会超时,这是一个数学题,a+(i*(i+1)/2)=m,当a最小的时候是等于1,所以1+(i*(i+1)/2)<=m;
所以i<=sqrt(2*m);因为这是一个等差数列,d为1;
import java.util.*;
class Main{
public static void main(String args[])
{Scanner cin=new Scanner(System.in);
while(cin.hasNext())
{long n=cin.nextInt();
long m=cin.nextInt();
if(n==0&&m==0)
break;
long d=0;
for(int i=(int)Math.sqrt(2*m);i>0;i--)
{
d=m-(i+i*i)/2;
if(d%i==0)
System.out.println("["+(d/i+1)+","+(d/i+i)+"]");
}
System.out.println();
}
}
}
hdu2058java的更多相关文章
随机推荐
- Discuz! 7.2 SQL注入exp
已经有人写出一些工具了,但是感觉不怎么好用,就自己写了个. 参数:1.可直接getshell2.爆管理账号密码3.爆表前缀如果表前缀不是默认的cdb_ 只需更改代码中的 $table即可,方便快捷. ...
- js 模块化
http://kb.cnblogs.com/page/132461/ http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth. ...
- 如何将一个IP地址移出PBL,不然,国内邮件服务器不能正常发送国外邮件哟。
550 OU-001 Mail rejected by Outlook for policy reasons. If you are not an email/network admin please ...
- AFNetworking网络请求的get和post步骤
1.首先通过第三方:CocoaPods下载AFNetworking 1.1.先找到要查找的三方库:pod search + AFNetworking 1.2.出来一堆列表页面,选择三方库最新版本命 ...
- xbmc
XBMC是一个优秀的自由和开源的(GPL)媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0系统.XBMC能够播放几乎所有流行的音频和视频格 ...
- SharedPreference.Editor的apply跟commit方法的異同
相同点: 1.二者都可提交preference的修改数据 2.二者都是原子操作 区别: 1.apply没有返回值而commit返回boolean表明修改是否提交成功 2.apply是将修改数据原子提交 ...
- Android之读取 AndroidManifest.xml 中的数据
转:http://www.2cto.com/kf/201208/151123.html 下来示例如何读取这些数据. 1 版本信息.应用名称 2 Appliction 的Meta-data 3 Acti ...
- [转]NHibernate之旅(4):探索查询之条件查询(Criteria Query)
本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...
- (转)Ubuntu下彻底卸载mysql
感谢原作者,文章内容很实用.原文链接:http://www.blogjava.net/yjhmily/articles/336926.html ============================ ...
- VS2015连接Oracle数据库(转)
原文地址:https://xuanwo.org/2016/01/03/vs-oracle-11g 开发环境 宿主机:Win10 + VS2015 + ODP.Net for VS2015虚拟机:Win ...