您的位置:首页 > 产品设计 > UI/UE

sicily 1209. Sequence Sum Possibi

2015-11-14 16:21 435 查看

1209. Sequence Sum Possibi

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

Most positive integers may be written as a sum of a sequence of at least two consecutive positive integers. For instance,

6 = 1 + 2 + 3

9 = 5 + 4 = 2 + 3 + 4

but 8 cannot be so written.

Write a program which will compute how many different ways an input number may be written as a sum of a sequence of at least two consecutive positive integers.

Input

The first line of input will contain the number of problem instances N on a line by itself, (1<=N<=1000) . This will be followed by N lines, one for each problem instance. Each problem line will have the problem number, a single space and the number to be
written as a sequence of consecutive positive integers. The second number will be less than 2^31 (so will fit in a 32-bit integer).

Output

The output for each problem instance will be a single line containing the problem number, a single space and the number of ways the input number can be written as a sequence of consecutive positive integers.

Sample Input


7
1 6
2 9
3 8
4 1800
5 987654321
6 987654323
7 987654325

Sample Output


1 1
2 2
3 0
4 8
5 17
6 1
7 23


题目分析

求给定的数可以写成连续几个数(至少2个)的和的方法

暴力枚举超时

可以利用等差数列公式,枚举项数。因为假设有i项相加可以得到,则这i项唯一确定

设有 i 项,为 l,l+1,l+2....l+i-1;

则(2l + i-1 ) * i = 2n

即2l*i + (i-1)*i = 2n

若l为整数则成立

#include <stdio.h>

int main()
{
int test;
scanf("%d", &test);
int id, num;
while (test--) {
scanf("%d%d", &id, &num);
int count = 0;
for (int i = 2; i*(i-1) < 2*num; ++i) {
if ( (2*num - i*(i-1)) % (2*i) == 0 )
count++;
}
printf("%d %d\n", id, count);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: