| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
果然是大牛的程序,真是大开眼界!In Reply To:Re:高精度 Posted by:gemenhao at 2007-02-08 23:35:02 > 考虑到数据比较小,可以不用高精度,呵呵
> int main()
> {
> int N, D;
> double maxn = pow(2.0, 62.5);
> while (scanf("%d %d", &N, &D) && (N != 0 || D != 0)){
> double max = pow(N, D);
> if (max < maxn){
> printf("%I64d\n", pown(N, D));
> continue;
> }
> __int64 a1 = pown(N, D / 2);
> __int64 a2 = pown(N, D - D / 2);
> __int64 a1h = a1 / base, a1l = a1 % base;
> __int64 a2h = a2 / base, a2l = a2 % base;
> __int64 low = a1l * a2l;
> __int64 hih = a1h * a2h * base + a1h * a2l + a2h * a1l + low / base;
> printf("%I64d", hih);
> printf("%09I64d\n", low % base);
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator