Advertisement
Guest User

Pi

a guest
Mar 28th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.76 KB | None | 0 0
  1. #include "stdio.h"
  2.  
  3. void pi(int* p, int n) {
  4.   int N=(10*n/3+1);
  5.   int rest[N];
  6.   int z[N];
  7.   int sum[N];
  8.  
  9.   for(int i=0;i<N;i++) {
  10.     rest[i] = 2;
  11.   }
  12.  
  13.   z[N-1] = 0;
  14.   for(int i=0; i<n; i++) {
  15.     for(int j=N-1; j>0; j--) {
  16.       int k = (j<<1)+1;
  17.       sum[j] = 10 * rest[j] + z[j];
  18.       rest[j] = sum[j] % k;
  19.       z[j-1] = sum[j]/k*j;
  20.     }
  21.     sum[0] = rest[0] * 10 + z[0];
  22.     rest[0] = sum[0] % 10;
  23.     p[i] = sum[0]/10;
  24.   }
  25.  
  26.   for(int i=n-1; i>0; i--) {
  27.     if(p[i] == 10) {
  28.       p[i-1] = (p[i-1] + 1) % 10;
  29.       p[i] = 0;
  30.     }
  31.   }
  32. }
  33.  
  34. void printArray(int* A, int n) {
  35.   for(int i=0; i<n; i++) {
  36.     printf("%d",A[i]);
  37.   }
  38.   printf("\n");
  39. }
  40.  
  41. int main () {
  42.   int n=100000;
  43.   int p[n];
  44.   pi(p,n);
  45.   printArray(p,n);
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement