标签:
| Time Limit: 3000MS | Memory Limit: 32768KB | 64bit IO Format: %I64d & %I64u | 
Description
Input
Output
Sample Input
2 1 3
Sample Output
0 1
/*
Author: 2486
Memory: 1416 KB		Time: 2823 MS
Language: G++		Result: Accepted
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL;
const int maxn=1e5;
int t;
LL n;
int main() {
    scanf("%d",&t);
    while(t--) {
        scanf("%I64d",&n);
        if(n==0||n==1) {
            printf("0\n");
            continue;
        }
        int cnt=0;
        for(int i=1; i<=sqrt(n); i++) {
            if((n+1)%(i+1)==0&&(n+1)/(i+1)>=i+1)cnt++;
        }
        printf("%d\n",cnt);
    }
}/*
Author: 2486
Memory: 1592 KB		Time: 46 MS
Language: G++		Result: Accepted
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;
const int maxn=100000+5;
LL prime[maxn];
bool vis[maxn];
int T,cnt;
LL N;
void primes() { //初始化素数列表
    cnt=0;
    for(int i=2; i<maxn; i++) {
        if(vis[i])continue;
        prime[cnt++]=i;
        for(int j=i*2; j<maxn; j+=i) {
            vis[j]=true;
        }
    }
}
void solve(LL n) {
    LL ans=1;
    for(int i=0; prime[i]*prime[i]<=n; i++) {
        if(n%prime[i]==0) {
            int s=0;
            while(n%prime[i]==0)n/=prime[i],s++;
            ans*=(s+1);
        }
        if(n==1)break;
    }
    if(n>1)ans*=2;
    printf("%I64d\n",(ans+1)/2-1);
}
int main() {
    primes();
    scanf("%d",&T);
    while(T--) {
        scanf("%I64d",&N);
        N++;
        solve(N);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU 2601An easy problem-素数的运用,暴力求解
标签:
原文地址:http://blog.csdn.net/qq_18661257/article/details/47103257