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 |
贡献出自己花了4天时间写的代码#include <stdio.h> #include <string.h> struct BigInt { char bit[500]; bool flag; int nbit; }; void InPut(BigInt *p) { if(p->bit[0] == '-') p->flag = 1; p->nbit = strlen(p->bit); int i,j,k; int len = p->nbit; i = 0;j = len-1; while(i<=j) { char temp = p->bit[i]-48; p->bit[i] = p->bit[j]-48; p->bit[j] = temp; i++;j--; } if(p->flag) p->bit[len-1] = 0; for(i = len-1;i>=0;i--) if(p->bit[i]>0 && p->bit[i]<=9) break; p->nbit = i+1; } void Multip(const BigInt a,const BigInt b,BigInt *res) { if(a.flag == b.flag) res->flag = 0; int i = 0,j = 0,k = 0,low = 0; while(i<b.nbit) { low = 0; while(j<a.nbit) { char num = low+a.bit[j]*b.bit[i]; k = i+j; res->bit[k] += num%10; low = num/10; low += res->bit[k]/10; res->bit[k] %= 10; j++; } if(low) res->bit[i+j] += low; k = i+j; i++;j = 0; } if(low) res->nbit = k+1; else res->nbit = k; } int main() { BigInt b1 = {0},b2 = {0},b3 = {0}; int n = 0; int i,j,k; /* strcpy(b1.bit,"860709538625867"); strcpy(b2.bit,"95123"); InPut(&b1); InPut(&b2); Multip(b1,b2,&b3); */ while(EOF != scanf("%s %d",b1.bit,&n)) { j = 0; int pos = 0; if(n == 0) { printf("1\n"); continue; } if(b1.bit[0] != '.') { for(i = 0;b1.bit[i];i++) { if(b1.bit[i] != '.') { b1.bit[j++] = b1.bit[i]; } else pos = i; } b1.bit[j] = '\0'; if(pos) pos = strlen(b1.bit+pos); pos *= n; } else { pos = strlen(b1.bit+1); pos *= n; for(i = 0;b1.bit[i];i++) { if(b1.bit[i] != '.') { b1.bit[j++] = b1.bit[i]; } } b1.bit[j] = '\0'; } InPut(&b1); b2 = b1; b3 = b2; while(n>1) { memset(&b3,0,sizeof(BigInt)); Multip(b2,b1,&b3); b2 = b3; n--; } i = b3.nbit-1>pos-1 ? b3.nbit-1:pos-1; for(j = 0;j<pos;j++) if(b3.bit[j]) break; if(i<j) { printf("0\n"); continue; } while(i>=j) { if(i+1 == pos) putchar('.'); putchar(b3.bit[i--]+48); } printf("\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator