mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
42 lines
748 B
C++
42 lines
748 B
C++
|
#include<stdio.h>
|
||
|
#include<string.h>
|
||
|
typedef __int64 ll;
|
||
|
ll m;
|
||
|
ll cal(ll s,ll x)
|
||
|
{
|
||
|
return (2*s+x-1)*x;
|
||
|
}
|
||
|
ll binary_search(ll x)
|
||
|
{
|
||
|
ll left,right,mid,tmp;
|
||
|
left=1,right=m/2+1;
|
||
|
while(left<=right)
|
||
|
{
|
||
|
mid=(left+right)>>1;
|
||
|
tmp=cal(mid,x);
|
||
|
if(tmp==2*m)
|
||
|
return mid;
|
||
|
else if(tmp<2*m)
|
||
|
left=mid+1;
|
||
|
else
|
||
|
right=mid-1;
|
||
|
}
|
||
|
return -1;
|
||
|
}
|
||
|
int main()
|
||
|
{
|
||
|
ll i,tmp,num,cnt=1;
|
||
|
while(scanf("%I64d",&m)!=EOF)
|
||
|
{
|
||
|
num=0;
|
||
|
for(i=2;i*i<=2*m+10;i++)
|
||
|
{
|
||
|
tmp=binary_search(i);
|
||
|
if(tmp!=-1)
|
||
|
num++;
|
||
|
}
|
||
|
printf("%I64d\n",num+1);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|