您的位置:首页 > 理论基础 > 计算机网络

杭州网络预赛1004 Deciphering Password

2008-11-30 00:08 316 查看
真糟糕,被%耍了一晚

多写两个就超时了……真不应该到现在才来把这题干掉

#include <iostream>

using namespace std;

#define MAXN 1001

__int64 a,b;

int prim[MAXN],pcnt;

bool is_prim[MAXN];

void prepare(){

memset(is_prim,true,sizeof(is_prim));

pcnt=0;

__int64 i,j;

for(i=2;i<MAXN;i++){

if(is_prim[i]){

for(j=i;i*j<MAXN;j++)

is_prim[i*j]=false;

prim[pcnt++]=i;

}

}

}

int main(){

__int64 i,j,k,ans,tt,T=1;

prepare();

while(scanf("%d%d",&a,&b)!=EOF){

ans=1;

b%=10007;//( j * b + 1) %10007 = ( j % 10007 * b % 10007 % 10007 + 1 ) % 10007

for(i=0;i<pcnt && prim[i]*prim[i]<=a && a!=1;i++){

for(j=0;a%prim[i]==0;j++)

a/=prim[i];

tt=(j*b+1)*(j*b+2)/2%10007;//立方和公式

tt*=tt;

ans=ans*tt%10007;

}

if(a!=1){

tt=(b+1)*(b+2)/2%10007;

tt*=tt;

ans=ans*tt%10007;

}

printf("Case %I64d: %I64d\n",T++,ans);

}

return 0;

}

请见:积性函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐