Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <inttypes.h>
- #include<limits.h>
- #include<stdio.h>
- ///2.
- long puzzle2(char* s, char* d){
- char d_current;
- for(char* s_ptr = s; ; s_ptr++){
- char* d_ptr = d;
- do{
- d_current = *d_ptr;
- d_ptr++;
- if(d_current == 0)
- return s_ptr-s;
- }while( (*s_ptr) != d_current);
- }
- }
- ///3.
- uint32_t puzz3(uint32_t n, uint32_t d){
- int64_t long_d, long_n;
- uint32_t mask, result;
- long_d = ((uint64_t)d)<<32LL;
- long_n = n;
- mask = 0x80000000;
- result = 0;
- for(int i = 32; i!=0; i--){
- long_n <<= 1;
- if((long_n - long_d)>=0){
- result |= mask;
- long_n -= long_d;
- }
- mask>>=1;
- }
- return result;
- }
- ///4.
- int puzz4(long *a, long v, uint64_t s, uint64_t e){
- uint64_t result, temp;
- result = e - s;
- result >>= 1;
- result += s;
- if(e < s)
- return -1;
- temp = *(a+result);
- if(v == temp)
- return result;
- if(temp > v)
- return puzz4(a, v, s, result-1);
- return puzz4(a, v, result+1, e);
- }
- ///5.
- void readlong(long * ptr){
- scanf("%lld", ptr);
- }
- long puzzle5(void){
- long a,b;
- readlong(&a);
- readlong(&b);
- return (a%b)==0;
- }
- /// 6.
- long switch_prob(long x, long n){
- switch(n-3){
- case 0:
- case 1:
- return 8*x;
- case 4:
- return x>>3;
- case 2:
- x *= 15;
- case 5:
- x *= x;
- default:
- return x+0x4b;
- }
- }
- ///8.
- struct T{
- long max; // tutaj rdi
- long min; // no to tutaj rdi+8
- long avg; // rdi+16
- };
- struct T puzzle8(long *a, long n){ //rdi = ukryty argument-wskaŸnik na result
- int64_t sum, temp, min, max;
- struct T result;
- sum = 0;
- min = LONG_MAX;
- max = LONG_MIN;
- for( int i = 0; i <= n; i++){
- temp = a[i];
- if(temp>max)
- max = temp;;
- if(min>temp)
- min = temp;
- sum += temp;
- }
- result.max = max; // *rdi
- result.min = min; // *(rdi+8)
- result.avg = sum/n; // *(rdi+16)
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement