时间限制: 1 Sec 内存限制: 128 MB提交 状态
题目描述
定义:f(x)为x分解为连续正整数(大于一个)的和的方案数。 例如: ·6=1+2+3,所以f(6)=1 。 ·15=1+2+3+4+5=4+5+6=7+8,所以f(15)=3 。 现在输入一个正整数n,请求出f(n)。
输入
一行一个正整数,表示n。
输出
一行一个数,表示f(n)。
样例输入 Copy
15样例输出 Copy
3提示
提交状态
GPLv2 licensed by
#pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3,"Ofast","inline") #include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll m; cin>>m; ll ans=0; //if(m==1) {printf("0");return 0;} for(ll i=2;i<=sqrt((long double )m)*2;i++) { if((2*m-i*i+i)%(2*i)==0) { ll kk=(2*m-i*i+i)/(2*i); if(kk>0) { ans++; //printf("%d\n",kk); } } } printf("%lld",ans); return 0; } /************************************************************** Problem: 16114 User: 2019UPC110 Language: C++ Result: 正确 Time:32 ms Memory:2024 kb ****************************************************************/