2020-7-3

    技术2024-05-10  88

    问题 A: 数学 (math)

    时间限制: 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 ****************************************************************/

     

    Processed: 0.011, SQL: 9