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

Re:牛XX....过了就好-,-

Posted by 4h at 2008-10-08 20:09:23 on Problem 3696
In Reply To:牛XX....过了就好-,- Posted by:majia5 at 2008-10-08 18:00:49
> 
无奈用将数据分段成两个I64..
后来在网上找了个ModPower的函数不会溢出.

I64 MultiMod(I64 &a, I64 b, I64 &c)
{
    I64 ret = 0, d = a;
    for (; b; b >>= 1, d <<= 1, d %= c)
        if ((b & 1))
            ret = (ret + d) % c;
    return ret;
}

I64 ModPower(I64 base, I64 exp, I64 &mod)
{
    I64 ret = 1;
    for (; exp; exp >>= 1, base = MultiMod(base, base, mod))
        if ((exp & 1))
            ret = MultiMod(ret, base, mod);
    return ret;
}

不过慢了点.375ms,用高精度才110ms

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