hihocoder 1543

http://hihocoder.com/problemset/problem/1543

 

题目很简单,最开始想了一下前缀和然后二分查找一下,发现二分很容易找不到答案

然后想起来了$s = \frac{(m+n)*(m-n+1))}{2}$公式,但是并没有想到怎么用,

然后看了一下别人的代码,我们可以枚举系数$(m-n+1)$,从$\sqrt{2*x}$开始枚举

然后如果这个系数是2*a的因子的话,那么看它的平均数是多少

计数个因子的平均数一定是偶数,偶数个因子的平均数一定是奇数

然后根据这个可以判断这个等式是否成立就可以了

 1 import java.math.BigDecimal;
 2 import java.util.Scanner;
 3 
 4 public class Main{
 5     public static void main(String[] args) {
 6         Scanner cin = new Scanner(System.in); 
 7         int t;
 8         long a;
 9         t = cin.nextInt();
10         while((t--)>0){
11             a = cin.nextLong();
12             for(int i = (int) Math.sqrt(2*a);i>0;i--){
13                 if((a*2)%i==0){
14                     if((((a*2)/i)-i)%2!=0){
15                         System.out.println(i);
16                         break;
17                     }
18                 }
19             }
20         }
21     }
22 }

 

posted @ 2017-08-05 11:20  一个_小菜鸟  阅读(98)  评论(0编辑  收藏  举报