题意:给一个n,求它用i * j + i + j来表示的方法有几种
题解:
n = i * j + i + j
n + 1 = (i + 1)(j + 1)
即求n + 1的因子个数
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int T;
__int64 n; //n太大要用int64来存
cin>>T;
while(T--)
{
scanf("%I64d", &n);
n++;
int ans = 0;
for(int i = 2; i<=sqrt((double) n); i++) //sqrt(n)里要写明重载类型,不然CE
{
//因为题目说了i>0,即变化后的(i+1)>0,i>1,i需要从2开始
if(n % i == 0)
ans++;
}
cout<<ans<<endl;
}
return 0;
}