分析:因为数字之间只有加减变换,所以-k和k是一样的,都可以当成整数来考虑,只要找到最小的n满足sum=n*(n+1)/2>=k;且sum和k同奇同偶即可,做法是用二分查找,然后在就近查找

因为1,2,3,4,5,6……的sum变化是奇奇偶偶奇奇偶偶奇奇偶偶……

程序:

 import java.math.BigInteger;
import java.util.Scanner;
public class Main {
static long l,r,mid;
public static long Binary(long k){
l=0;r=100000;
long ans=0;
while(l<=r){
mid=(l+r)/2;
long sum=mid*(mid+1)/2;
if(sum>=k){
ans=mid;
r=mid-1;
}
else{
l=mid+1;
}
}
return ans;
}
public static long fun(long k){
if(k==0)
return 3;
long ans=Binary(k);
long sum=ans*(ans+1)/2;
if(k%2!=0){
for(long i=ans;i>=0;i--){
long s=i*(i+1)/2;
if(s<k)break;
if(s%2!=0)
return i;
}
for(long i=ans;;i++){
long s=i*(i+1)/2;
if(s%2!=0)
return i;
}
}
else{
for(long i=ans;i>=0;i--){
long s=i*(i+1)/2;
if(s<k)break;
if(s%2==0)
return i;
}
for(long i=ans;;i++){
long s=i*(i+1)/2;
if(s%2==0)
return i;
}
}
}
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
int n;
n=cin.nextInt();
for(int i=0;i<n;i++){
long k;
k=cin.nextInt();
if(k<0)
k=-k;
long ans=fun(k);
if(i!=0)
System.out.println();
System.out.println(ans);
}
}
}

最新文章

  1. IplImage, CvMat, Mat 的关系和相互转换(转)
  2. SWT布局管理器
  3. JQuery 1.8.3对IE9兼容问题getAttribute
  4. 1.【转】spring MVC入门示例(hello world demo)
  5. hdu 5653 Bomber Man wants to bomb an Array
  6. ARP协议的报文格式
  7. strcpy/strlen/strcat/strcmp面试总结
  8. TortoiseHg简单的入门使用说明
  9. [BZOJ 1034] [ZJOI2008] 泡泡堂BNB 【贪心】
  10. 通过xib自定义UITableViewCell
  11. STM32音乐播放器,文件查找的实现
  12. Django 的路由层 视图层 模板层
  13. python爬取股票信息
  14. 解释一下什么是servlet?
  15. javascript ES6模块化
  16. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
  17. c#多线程实现函数同步运行
  18. laravel多条件查询,及分页
  19. Java 数组详解 - 用法、遍历、排序、实用API
  20. SDUT3141:Count(哈希)好题

热门文章

  1. Peeking into Apache Flink's Engine Room
  2. jsonObject jsonarray
  3. java BufferedWriter and BufferedReader
  4. [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)
  5. Java程序员从笨鸟到菜鸟之(二十一)java过滤器和监听器详解 【转】
  6. 老调重弹:对kvo的封装思路
  7. 设计模式:组合模式(Composite)
  8. 学习一下Fiddler的强大
  9. PMP--论文部分
  10. Rails进阶参考