ACM-ICPC 2011 Asia Phuket Regional [J] Consecutive Sums
Also bnu 12614
作为没有oi背景的大四生因为被拉去充数组队,只是为了突击算法,在短期内提高能力,所以并木有代码…
Problem
The sum of p (p>0) consecutive integers can often be equal to the sum of next q consecutive positive integers. For example:
9+10+11+12 = 13+14+15, Here p = 4 and q = 3
4+5+6+7+8 = 9+10+11, Here p = 5 and q = 3.Given the value of q, how many possible values of p are there?
Solution
并不知道左边的数能不能是负数,所以…
设右边第一个数是
x
,左边第一个就是
p(x−p)+p(p−1)2=qx+q(q−1)2
转化为下面的式子:
2x=p−q+1+2q2p−q
于是我们要考虑
p−q
的取值
因为左边是2的倍数,所以要稍微考虑一下奇偶性的影响:
- 如果
q
是奇数,
p 是偶数的话: p−q 是奇数, 2q2p−q 是偶数: p−q 取值是 q2 的奇约数 - 如果
q
是奇数,
p 是奇数的话: p−q 是偶数, 2q2p−q 是奇数: p−q 取值是 q2 的奇约数*( q2 里面所有2的个数+1) = q2 的奇约数 - 如果
q
是偶数,
p 是偶数的话: p−q 是偶数, 2q2p−q 是奇数: p−q 取值是 q2 的奇约数*( q2 里面所有2的个数+1) - 如果
q
是偶数,
p 是奇数的话: p−q 是奇数, 2q2p−q 是偶数: p−q 取值是 q2 的奇约数
于是总结结果:
1. if
2|q
,
q2
的约数个数*2
2. else,
q2
的所有约数个数