ACM-ICPC 2011 Asia Phuket Regional [J] Consecutive Sums

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 ,左边第一个就是 xp
p(xp)+p(p1)2=qx+q(q1)2
转化为下面的式子:
2x=pq+1+2q2pq

于是我们要考虑 pq 的取值
因为左边是2的倍数,所以要稍微考虑一下奇偶性的影响:

  1. 如果 q 是奇数, p 是偶数的话: pq 是奇数, 2q2pq 是偶数: pq 取值是 q2 的奇约数
  2. 如果 q 是奇数, p 是奇数的话: pq 是偶数, 2q2pq 是奇数: pq 取值是 q2 的奇约数*( q2 里面所有2的个数+1) = q2 的奇约数
  3. 如果 q 是偶数, p 是偶数的话: pq 是偶数, 2q2pq 是奇数: pq 取值是 q2 的奇约数*( q2 里面所有2的个数+1)
  4. 如果 q 是偶数, p 是奇数的话: pq 是奇数, 2q2pq 是偶数: pq 取值是 q2 的奇约数

于是总结结果:
1. if 2|q q2 的约数个数*2
2. else, q2 的所有约数个数

你可能感兴趣的:(acm题目,数论)