Advertisement
dgulczynski

ASK_5_3&4

Mar 26th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1. #include <inttypes.h>
  2. #include<limits.h>
  3. #include<stdio.h>
  4. ///2.
  5. long puzzle2(char* s, char* d){
  6.     char d_current;
  7.     for(char* s_ptr = s; ; s_ptr++){
  8.         char* d_ptr = d;
  9.         do{
  10.             d_current = *d_ptr;
  11.             d_ptr++;
  12.             if(d_current == 0)
  13.                 return s_ptr-s;
  14.         }while( (*s_ptr) != d_current);
  15.     }
  16. }
  17. ///3.
  18. uint32_t puzz3(uint32_t n, uint32_t d){
  19.     int64_t long_d, long_n;
  20.     uint32_t mask, result;
  21.     long_d = ((uint64_t)d)<<32LL;
  22.     long_n = n;
  23.     mask = 0x80000000;
  24.     result = 0;
  25.     for(int i = 32; i!=0; i--){
  26.         long_n <<= 1;
  27.         if((long_n - long_d)>=0){
  28.             result |= mask;
  29.             long_n -= long_d;
  30.         }
  31.         mask>>=1;
  32.     }
  33.     return result;
  34. }
  35. ///4.
  36. int puzz4(long *a, long v, uint64_t s, uint64_t e){
  37.     uint64_t result, temp;
  38.     result = e - s;
  39.     result >>= 1;
  40.     result += s;
  41.     if(e < s)
  42.         return -1;
  43.     temp = *(a+result);
  44.     if(v == temp)
  45.         return result;
  46.     if(temp > v)
  47.         return  puzz4(a, v, s, result-1);
  48.     return  puzz4(a, v, result+1, e);
  49. }
  50. ///5.
  51. void readlong(long * ptr){
  52.     scanf("%lld", ptr);
  53. }
  54. long puzzle5(void){
  55.     long a,b;
  56.     readlong(&a);
  57.     readlong(&b);
  58.     return (a%b)==0;
  59. }
  60. /// 6.
  61. long switch_prob(long x, long n){
  62.     switch(n-3){
  63.         case 0:
  64.         case 1:
  65.             return 8*x;
  66.         case 4:
  67.             return x>>3;
  68.         case 2:
  69.             x *= 15;
  70.         case 5:
  71.             x *= x;
  72.         default:
  73.         return x+0x4b;
  74.     }
  75. }
  76. ///8.
  77. struct T{
  78.     long max; // tutaj rdi
  79.     long min; // no to tutaj rdi+8
  80.     long avg; // rdi+16
  81. };
  82. struct T puzzle8(long *a, long n){ //rdi = ukryty argument-wskaŸnik na result
  83.     int64_t sum, temp, min, max;
  84.     struct T result;
  85.     sum = 0;
  86.     min = LONG_MAX;
  87.     max = LONG_MIN;
  88.     for( int i = 0; i <= n; i++){
  89.         temp = a[i];
  90.         if(temp>max)
  91.             max = temp;;
  92.         if(min>temp)
  93.             min = temp;
  94.         sum += temp;
  95.     }
  96.     result.max = max;   // *rdi
  97.     result.min = min;   // *(rdi+8)
  98.     result.avg = sum/n; // *(rdi+16)
  99.     return result;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement