hdu 6108 小C的倍数问题

来源:互联网 发布:网络打印机0个文档被挂 编辑:程序博客网 时间:2024/04/29 03:09

找出规律,n-1所有的因子都符合规律,上模板

#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#include<math.h>using namespace std;const int maxn= 1e5+10;bool visit[maxn]= {0};int N=0;int prime[maxn];void init(){    for(int i=2; i<maxn; i++)    {        if(!visit[i])            prime[N++]=i;        for(int j=0; j<N; j++)        {            int k=i*prime[j];            if(k>maxn)break;            visit[k]=1;        }    }}int main(){    int t;    init();    scanf("%d",&t);    while(t--)    {        int n;        scanf("%d",&n);        n--;       int ans=1;      for(int i=0;i<N&&prime[i]*prime[i]<=n;i++)      {          //printf("%d %d\n",i,prime[i]);          if(n%prime[i]==0)          {              int t=0;              while(n%prime[i]==0)              {                  n/=prime[i];                  t++;                  //printf("%d %d\n",prime[i],t);              }              ans*=(t+1);          }      }      if(n>1)ans*=2;       printf("%d\n",ans);    }    return 0;}


原创粉丝点击