poj 1001
2012-02-13 15:47
204 查看
没有做最后的整理了、、、、
#include "stdio.h" #include "string.h" struct Bignum{ int s[3000]; //数组 int len; //长度 int point; //小数点位数 Bignum() { len = 1; point = 0; memset(s, 0, sizeof(s)); } Bignum operator = (const char* num) { len = strlen(num); int flag = 0; int j; point = 0; for(int i=0,j=len-1; j>=0; j--) { if(num[j] != '.') { s[i++] = num[j]-'0'; if(flag==0) { point++; } } else { flag = 1; } } if(flag) { len--; } return *this; } Bignum operator * (const Bignum& b) const { Bignum c; c.point = point + b.point; int i,j; for(i=0; i<len; i++) { for(j=0; j<b.len; j++) { c.s[i+j] = c.s[i+j] + s[i]*b.s[j]; } } int g; for(c.len=0,g=0; g!=0 || c.len<(len+b.len); c.len++) { c.s[c.len] = c.s[c.len] + g; g = c.s[c.len]/10; c.s[c.len] = c.s[c.len]%10; } c.clear(); return c; } void clear() { /** * 把数字前面和后面的0去掉 */ //printf("(1)len:%d\n(1)point:%d\n", len, point); int old_len=len, old_point=point, i; len = 0; //去掉小数点后面的零 for(i=0; i<old_len && i<old_point; i++) { if(s[i]!=0) { break; } point--; } //for i for(; i<old_len; i++) { s[len++] = s[i]; } //for //printf("len:%d\npoint:%d\n", len, point); //去掉整数前面零 for(; len>0; len--) { if(s[len-1]!=0) { break; } } //for } void print() { clear(); if(point>=len) { printf("."); while(point>len) { printf("0"); point--; } } //if for(int i=len-1; i>=0; i--) { printf("%d", s[i]); if(i==point && i!=0) { printf("."); } } //for printf("\n"); } }; int main() { freopen("D:\\in.txt", "r", stdin); char a[100]; int b; while(scanf("%s%d", a, &b)==2) { //printf("b:%d\n", b); Bignum c,d; c = a; d = a; c.clear(); d.clear(); //d.print(); for(int i=1; i<b; i++) { d = d * c; } d.print(); } return 0; }
思路:
1、把数字存储在数字数组中。
2、主要是在小数点的处理上。
相关文章推荐
- POJ1001-烦死人的模拟
- POJ 1001 Exponentiation(大数处理)
- poj 1001 Exponentiation
- POJ 1001(大数相乘)
- poj 1001 Exponentiation
- POJ 1001 求高精度幂
- poj1001
- POJ 1001
- poj 1001 Exponentiation(高精度运算)
- POJ 1001 Exponentiation(大数幂,还是Java大发好!需调用多个方法)
- POJ - 1001:test
- POJ 1001 Exponentiation
- poj-1001
- POJ 1001 解题报告
- POJ 1001(高精度乘法)
- POJ 1001 高精度指数运算
- POJ 1001
- poj1001高精度乘法
- poj 1001 Exponentiation
- poj 1001 exponentiation