思路:
可以化简为 N+1 = (i+1)*(j+1);
坑点:
注意i*i爆int了。。。
#include <iostream>
#include <cstdio>
#include <string.h>
#include <queue>
#include <cmath>
#include <algorithm>
#include <map>
typedef long long int lli;
using namespace std;
lli ff(lli n){
lli res = 1;
int cnt = 0;
for(lli i = 2;i * i <= n;i++){
cnt = 0;
while(n % i == 0){
cnt++;
n /= i;
}
res *= (cnt+1);
}
if(n != 1){
res *= 2;
}
return res-2;
}
int main(){
int t;
cin>>t;
lli n;
while(t--){
scanf("%lld",&n);
if(n == 0){
printf("0\n");
continue;
}
lli ans = ff(n+1);
ans = (ans + 1) / 2;
printf("%lld\n",ans);
}
}