| ||||||||||
| 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 | |||||||||
Re:高精度In Reply To:高精度 Posted by:nuciedh at 2007-02-08 21:21:51 考虑到数据比较小,可以不用高精度,呵呵
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