Description
给出一整数 n n ,问有多少种方案将表示成 i⋅j+i+j(1≤i≤j) i ⋅ j + i + j ( 1 ≤ i ≤ j ) 的形式
Input
第一行一整数 T T 表示用例组数,每组用例输入一整数
Output
对于每组用例输出方案数
Sample Input
2
1
3
Sample Output
0
1
Solution
n+1=(i+1)(j+1),i<j n + 1 = ( i + 1 ) ( j + 1 ) , i < j ,方案数即 (n+1 ( n + 1 的因子数 +1)/2 + 1 ) / 2
Code
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int T;
ll n;
scanf("%d",&T);
while(T--)
{
scanf("%I64d",&n);
n++;
int ans=0,q=sqrt(n);
for(int i=2;i<=q;i++)
if(n%i==0)
ans++;
printf("%d\n",ans);
}
return 0;
}