HDU6108 小C的倍数问题 【脑洞】

来源:互联网 发布:中经商品交易中心软件 编辑:程序博客网 时间:2024/04/29 13:03

链接


:p,,xB,x%B=0

x=k0+k1p+k2p2+...+knpn
(k0+k1+...+kn)%B=ni=0ki%B=0
x=ni=0ki+ni=1((pi1)ki)
ni=1((pi1)ki)%B=0,x%B=0
pi1=(p1)(pi1+pi2+...+1)>(pi1)%(p1)=0   
B=p1p1,:ni=0ki%B=0,x%B=0

#include<stdio.h>#include<bits/stdc++.h>#define ll long long#define pii pair<int,int>#define pll pair<ll,ll>#define MEM(a,x) memset(a,x,sizeof(a))#define lowbit(x) ((x)&-(x))using namespace std;const int N = 5000 + 5;const double EPS = 1e-7;int slove(int n){    int ans=0;    for(int i=1,ed=sqrt(n);i<=ed;++i){        if(n%i==0){            ++ans;            int j=n/i;            if(i!=j){                ++ans;            }        }    }    return ans;}int main(){    //freopen("/home/lu/code/r.txt","r",stdin);    //freopen("/home/lu/code/w.txt","w",stdout);    int T;    scanf("%d",&T);    while(T--){        int p;        scanf("%d",&p);        printf("%d\n",slove(p-1));    }    return 0;}