poj 2853 Sequence Sum Possibilities

来源:互联网 发布:lol徐老师淘宝店网址 编辑:程序博客网 时间:2024/05/16 12:49
/*其实这个题目就是一个等差数列的问题嘛!连续数,公差为1,可以假设有i个元素的和为给定的num,用for循环依次遍历。然后根据等差数列求和num=i*a1+i*(i-1)*d/2, d即是公差1;可以根据判断a1%i是否为零,判定是否存在i个连续的整数的和为num,而且a1即是该等差数列的首项。如果是的话,则ans++*/#include <iostream>#include <cmath>using namespace std;int main(){    int n, i, j, sum, cnt, tc, ans;    cin >> tc;    while (tc--){         cin >> cnt >> n;        ans = 0;        for (i = 2; i*(i+1)/2 <= n; i++){            if ((n-i*(i+1)/2)%i == 0)                ans++;         }         cout << cnt << " " << ans << endl;    }         system("pause");}