fork(3) download
  1. #include<stdio.h>
  2.  
  3. int isDiv(int);
  4.  
  5. int main(){
  6.  
  7. int n;
  8. scanf("%d",&n);
  9.  
  10. //check contraint
  11. if(n<=0 || n>100){
  12. return 0;
  13. }
  14.  
  15. int a[100][100]; // main matrix
  16.  
  17. int counter=1; // keeps track of number
  18.  
  19. int i,j; //keeps track of position
  20.  
  21. int w; // w - window
  22.  
  23. int size=n-1; // size - size of segment of window
  24.  
  25. for( w = 0 ; w < n / 2 ; w++){
  26. i = w;
  27. j = w;
  28.  
  29. //go right
  30. for( j = j ; j < size + w ; j++){
  31. a[ i ][ j ] = counter;
  32. counter++;
  33. }
  34.  
  35. //go down
  36. for( i = i ; i < size + w ; i++){
  37. a[ i ][ j ] = counter;
  38. counter++;
  39. }
  40.  
  41. //go left
  42. for( j = j ; j > w ; j--){
  43. a[ i ][ j ] = counter;
  44. counter++;
  45. }
  46.  
  47. //go up
  48. for( i = i ; i > w ; i--){
  49. a[ i ][ j ] = counter;
  50. counter++;
  51. }
  52. size = size-2;
  53. }
  54. if( n % 2 != 0){
  55. a[ w ][ w ] = counter;
  56. }
  57.  
  58. //print matrix
  59. for( i = 0 ; i < n ; i++){
  60. for( j = 0 ; j < n ; j++){
  61. printf("%d\t", a[ i ][ j ]);
  62. }
  63. printf("\n");
  64. }
  65.  
  66. int no_div = (n*n)/11 + 1 ; // no of divisibles
  67.  
  68. printf("Total Power points : %d\n",no_div);
  69.  
  70. printf("(0,0)\n");
  71.  
  72. size=n-1;
  73.  
  74. //print positions
  75. for( w = 0 ; w < n / 2 ; w++){
  76. i = w;
  77. j = w;
  78.  
  79. //go right
  80. for( j = j ; j < size + w ; j++){
  81. if(isDiv( a[ i ][ j ] )){
  82. printf("(%d,%d)\n", i, j);
  83. }
  84. }
  85.  
  86. //go down
  87. for( i = i ; i < size + w ; i++){
  88. if(isDiv( a[ i ][ j ] )){
  89. printf("(%d,%d)\n", i, j);
  90. }
  91. }
  92.  
  93. //go left
  94. for( j = j ; j > w ; j--){
  95. if(isDiv( a[ i ][ j ] )){
  96. printf("(%d,%d)\n", i, j);
  97. }
  98. }
  99.  
  100. //go up
  101. for( i = i ; i > w ; i--){
  102. if(isDiv( a[ i ][ j ] )){
  103. printf("(%d,%d)\n", i, j);
  104. }
  105. }
  106. size = size-2;
  107. }
  108. if( n % 2 != 0){
  109. if(isDiv( a[ i ][ j ] )){
  110. printf("(%d,%d)\n", i, j);
  111. }
  112. }
  113.  
  114. return 0;
  115. }
  116.  
  117. int isDiv(int x){
  118. if( x % 11 == 0 ){
  119. return 1;
  120. }
  121. else{
  122. return 0;
  123. }
  124. }
Success #stdin #stdout 0s 4456KB
stdin
5
stdout
1	2	3	4	5	
16	17	18	19	6	
15	24	25	20	7	
14	23	22	21	8	
13	12	11	10	9	
Total Power points : 3
(0,0)
(4,2)
(3,2)