1. void power(int matrix[SIZE][SIZE], int result[SIZE][SIZE], int n, int p)
  2. {
  3. int i,j;
  4. int matrix2[SIZE][SIZE];
  5. if(p==0) for(i=0;i<n;i++)for(j=0;j<n;j++) result[i][j]=i==j; /* result = matrix*/
  6. else{
  7. power(matrix,result,n,p/2);
  8. multiply(result,result,matrix2,n,n,n);
  9. if(p%2==1) multiply(matrix2,matrix,result,n,n,n);
  10. else{
  11. for(i=0;i<n;i++)for(j=0;j<n;j++) result[i][j]=matrix2[i][j]%1000;
  12. }
  13. }
  14. }
  15.