标签:out system.in href [] oid ann string com 查找
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 }
标签:out system.in href [] oid ann string com 查找
原文地址:http://www.cnblogs.com/Tree-dream/p/7289642.html