首页 > 代码库 > hihocoder 1543

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 }

 

hihocoder 1543