首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。