Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么哇?跟AC的程序对比了100000组数据都没问题。。。

Posted by qiqilrq at 2007-07-25 03:41:15 on Problem 1845
#define maxn 10000
#include <iostream>
using namespace std;


typedef struct pf{
    int pN;
    int exponent;
}primeFactor;

primeFactor F[40];
int pFtop;
//integer decomposition
void factorDecomp(int n)
{
    pFtop=0;
    for(int i=2;i*i<=n;i++)if(!(n%i)){
        F[pFtop].pN=i;
        F[pFtop].exponent=0;
        while(0==(n%i))
        {
            n/=i;
            F[pFtop].exponent++; 
        }
        pFtop++;
    }
    if(n>1){
        F[pFtop].pN=n;
        F[pFtop].exponent=1;
        pFtop++;
    }
}

#define mod 9901

//prime base, exponent
//find 1+p+p^2+...+p^epn (mod mod)
int divSum(int pb, int epn)
{
    int res=1,tmp=pb;
    for(int i=1;i<=epn;i++){
        res+=tmp;
        res%=mod;
		tmp*=pb;
		tmp%=mod;
    }
    return res;
}


void solve(int b){
    int i,sum=1;
    for(i=0;i<pFtop;i++){
        F[i].pN%=mod;
        F[i].exponent=(F[i].exponent*b)%(mod-1);
    }
    for(i=0;i<pFtop;i++){
        sum*=divSum(F[i].pN, F[i].exponent);
        sum%=mod;
    }
    cout<<sum<<endl;
}


int main(){
    int A,B;
    while(cin>>A>>B)
    {
        if(A<2||B==0) {
            if(A<1) cout<<0<<endl;
            else cout<<1<<endl;
	        continue;
		}
        factorDecomp(A);
        solve(B%(mod-1));
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator