高精

来源:互联网 发布:什么是java框架 编辑:程序博客网 时间:2024/05/19 21:17
  1. struct BigN{
  2. #define maxlen (1005)
  3. #define base (10000)
  4. int len, A[maxlen];
  5. BigN():len(1){A[0] = 0;}
  6. BigN(const int x):len(1){A[0] = x;}
  7. void operator *= (const int x){
  8. int slid = 0, i;
  9. for(i = 0;i < len;++i){
  10. A[i] = A[i] * x + slid;
  11. slid = A[i] / base;
  12. A[i] %= base;
  13. }
  14. while(slid){
  15. A[i] = slid;
  16. slid = A[i] / base;
  17. A[i++] %= base;
  18. }
  19. len = i;
  20. }
  21. void operator /= (const int x){
  22. for(int i = len - 1;i;--i){
  23. A[i-1] += A[i] % x * base;
  24. A[i] /= x;
  25. }
  26. A[0] /= x;
  27. while(len > 1 && !A[len - 1])--len;
  28. }
  29. bool operator <(const BigN &b){
  30. if(len != b.len)return len < b.len;
  31. int i = len - 1;
  32. while((~i) && A[i] == b.A[i]) --i;
  33. return A[i] < b.A[i];
  34. }
  35. void put(FILE *Fout){
  36. int i = len - 1;
  37. fprintf(Fout, "%d", A[i]);
  38. while(i)
  39. fprintf(Fout, "%04d", A[--i]);
  40. }
  41. };
1 0
原创粉丝点击