Advertisement
alvsjo

SestiCas (vjezba pred kolokvijum)

Nov 6th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "time.h"
  4. #include "math.h"
  5.  
  6. unsigned int evenDigits(unsigned int n)
  7. {
  8. //rekurzirvna fja koja izbacuje parne cifre iz broja n
  9.     if (n<10 && n%2==0)
  10.         return 0;
  11.     if (n%2==1  && n<10)
  12.         return n;
  13.  
  14.     if (n%2==0)
  15.         return evenDigits(n/10);
  16.     return (evenDigits(n/10)*10)+(n%10);
  17.  
  18. }
  19.  
  20.  
  21.  
  22.  
  23. void printMat(int** mat, int m, int n)
  24. {
  25.     int i,j;
  26.     for(i=0;i<m;i++)
  27.      {
  28.  
  29.         for(j=0;j<n;j++)
  30.         {
  31.             printf("%4d ",mat[i][j]);
  32.         }
  33.         printf("\n");
  34.      }
  35. }
  36. void fillMatrix(int** mat, int m, int n, int k)
  37. {
  38.     //ponuni matricu sa [-k,k] i nalazi lok. max matrica u cetvorosmjeru
  39.     int i,j;
  40.     for(i=0;i<m;i++)
  41.      {
  42.  
  43.         for(j=0;j<n;j++)
  44.         {
  45.             mat[i][j]=rand()%(2*k+1)-k;
  46.         }
  47.      }
  48.  
  49.     for(i=0;i<m;i++)
  50.      {
  51.  
  52.         for(j=0;j<n;j++)
  53.         {
  54.             if (i-1>=0 && mat [i-1][j]>=mat[i][j])
  55.                 continue;
  56.             if (i+1<m && mat [i+1][j]>=mat[i][j])
  57.                 continue;
  58.             if (j-1>=0 && mat [i][j-1]>=mat[i][j])
  59.                 continue;
  60.             if (j+1>n && mat [i][j+1]>=mat[i][j])
  61.                 continue;
  62.  
  63.             printf("(%d,%d) = %d\n",i,j,mat[i][j]);
  64.  
  65.  
  66.         }
  67.      }
  68.  
  69.  
  70. }
  71.  
  72.  
  73. /*ima dva kopir aparata koji rade razlicitom brzinom
  74. prvi x sekundi, drugi y
  75. mogu se koristiti oba istovremeno
  76. potrebno je naci min vrijeme za koje se n list iskopira u n primjeraka
  77. n-4 x-1 y-1 r:3
  78. n-5 x-1 y-2 r:4
  79. n-11 x-3 y-2 r:14
  80. */
  81.  
  82. int moze(int n, int x, int y, int t)
  83. {
  84.   return  t/x+t/y>=n;
  85. }
  86.  
  87. int kopir(int n,int x, int y)
  88. {
  89.     int sol=x<y?x:y;
  90.     n--;
  91.     int l=0;
  92.     int r=n*x; //svejedno koji kopir
  93.  
  94.     while(l<=r)
  95.     {
  96.         if (l==r)
  97.         {
  98.             return sol+l;
  99.         }
  100.         int mid=(l+r)/2;
  101.         if(moze(n,x,y,mid))
  102.         {
  103.             r=mid;
  104.         }
  105.         else l=mid+1;
  106.     }
  107.  
  108. }
  109.  
  110.  
  111.  
  112.  
  113. int main()
  114. {
  115.  
  116.  printf("%d\n", evenDigits(12345));
  117.  printf("%d\n", evenDigits(1));
  118.  printf("%d\n", evenDigits(286));
  119.  printf("%d\n", evenDigits(33579));
  120.  printf("%d\n", evenDigits(22222889));
  121.  
  122.  
  123.  
  124.  
  125.  
  126. int m,n,k;
  127. scanf("%d",&m);
  128. scanf("%d",&n);
  129. scanf("%d",&k);
  130.  
  131. int ** mat=malloc(m*sizeof(int*));
  132. int i;
  133. for (i=0;i<m;i++)
  134. {
  135.     mat[i]=malloc(n*sizeof(int));
  136. }
  137. srand(time(0));
  138. fillMatrix(mat,m,n,k);
  139. printMat(mat,m,n);
  140.  
  141. printf("%d\n",kopir(11,3,2));
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.     return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement