1. Си / Говнокод #24350

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    int mysolve (int a, int b, int m) {
    	int n = (int) sqrt (m + .0) + 1;
     
    	int an = 1;
    	for (int i = n, t = a; i;) {
    		if (i & 1) {
    		    an = (an * t) % m;
    		    i -= 1;
    		} else {
    			t = (t * t) % m;
    			i >>= 1;
    		}
            }
     
    	int *vals = (int*) malloc(m * sizeof(int));
    	memset(vals, -1, m * sizeof(int));
     
    	for (int i = 1, cur = an; i <= n; ++i) {
    		if (vals[cur] == -1) vals[cur] = i;
    		cur = (cur * an) % m;
    	} 
     
    	for (int i = 0, cur = b; i <= n; ++i) {
    		if (vals[cur] != -1) {
    			int ans = vals[cur] * n - i;
    			if (ans < m) {
    				free(vals);
    				return ans;
    			}
    		}
    		cur = (cur * a) % m;
    	}
    	free(vals);
    	return -1;
    }

    Чото както тухло тут.
    Вот держите, вспомнил своё олимпиАДное прошлое, перевёл на Сишку и оптимизировал вот этоу хуйнц: https://e-maxx.ru/algo/discrete_log
    Чем больше модуль, ьем боьше жрёт память, дальше оптимизировать лень.

    Мне кажется, что что-то я здесь сделал не так...

    666_N33D135, 02 Июня 2018

    Комментарии (25)
  2. Си / Говнокод #24338

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    // https://github.com/omonar/nginx-http-auth-digest/blob/38fd7eb04b862636e61b812bbbb8fd2cae4d9ab4/ngx_http_auth_digest_module.c#L910
    
            if (ngx_auth_digest_str2_casecmp(start, 'n', 'c'))
            {
                field = &ngx_http_auth_digest_fields.nc;
    
            } else if (ngx_auth_digest_str3_casecmp(start, 'q', 'o', 'p'))
            {
                field = &ngx_http_auth_digest_fields.qop;
    
            } else if (ngx_auth_digest_str3_casecmp(start, 'u', 'r', 'i'))
            {
                field = &ngx_http_auth_digest_fields.uri;
    
            } else if (ngx_auth_digest_str5_casecmp(start, 'n', 'o', 'n', 'c', 'e'))
            {
                field = &ngx_http_auth_digest_fields.nonce;
    
            } else if (ngx_auth_digest_str5_casecmp(start, 'r', 'e', 'a', 'l', 'm'))
            {
                field = &ngx_http_auth_digest_fields.realm;
    
            } else if (ngx_auth_digest_str6_casecmp(start, 'c', 'n', 'o', 'n', 'c', 'e'))
            {
                field = &ngx_http_auth_digest_fields.cnonce;
    
            } else if (ngx_auth_digest_str6_casecmp(start, 'o', 'p', 'a', 'q', 'u', 'e'))
            {
                field = &ngx_http_auth_digest_fields.opaque;
    
            } else if (ngx_auth_digest_str8_casecmp(start, 'u', 's', 'e', 'r', 'n', 'a', 'm', 'e'))
            {
                field = &ngx_http_auth_digest_fields.username;
    
            } else if (ngx_auth_digest_str8_casecmp(start, 'r', 'e', 's', 'p', 'o', 'n', 's', 'e'))
            {
                field = &ngx_http_auth_digest_fields.response;
    
            } else if (ngx_auth_digest_str9_casecmp(start, 'a', 'l', 'g', 'o', 'r', 'i', 't', 'h', 'm'))
            {
                field = &ngx_http_auth_digest_fields.algorithm;
    
            } else {
                goto skip;
    
            }

    Чем им strcasecmp не угодил?

    j123123, 29 Мая 2018

    Комментарии (18)
  3. Си / Говнокод #24247

    −3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    double m_sqrt (double p){
                 double l = 1;
                 double m = 0;
    	
           for(m  =  (l +  ( p / l )   )  / 2;          
    		m  !=  l ;  
    		m  =  (l +  ( p / l )   )  / 2){
    	 	l = m; 
    	}
    
    return m;
    }

    tyrin, 10 Мая 2018

    Комментарии (8)
  4. Си / Говнокод #24216

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    if (cond1)
    {
      do_shit1();
    }
    else if (cond2)
    {
      do_shit2();
    }
    else if (cond3)
    {
      do_shit3();
    }
    else if (cond4)
    {
      do_shit4();
    }

    Вот например есть такая вот типичная хуита, предположим что я знаю, что среди этих cond1 cond2 ... только один может быть true, остальные условия всегда будет ложными.
    И в этой сраной цепочке из if - else if можно перемещать if блоки без изменения логики. НО в языке Си (да и в C++ я уверен тоже) нет способа сказать компилятору что-то вроде "только одно из условий true, так что ты, сраный компилятор, можешь переделывать эту хуиту, и даже убрать else, если процессор в таком случае (при if(cond1) {do_shit1();}; if(cond2) {do_shit2();}; ... ) будет эту ссанину быстрее обрабатывать".
    Какие-нибудь языки программирования такую оптимизацию вообще умеют?

    j123123, 03 Мая 2018

    Комментарии (19)
  5. Си / Говнокод #24209

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    #include <stdio.h>
    
    int main()
    {
    	for (int x; scanf("%d", &x);) {
        	#define x x += x
        	x & (x-1);
        	printf("%d\n", x);
    	}
    	return 0;
    }

    https://ideone.com/SxgTL0

    -3 -28
    -2 -20
    -1 -12
    0 -4
    1 4
    2 12
    3 20

    Ничо нипанятна...

    yet_another_one_shit, 01 Мая 2018

    Комментарии (6)
  6. Си / Говнокод #24208

    +1

    1. 1
    x & (x-1);

    Написавший это утверждает, что меняется содержимое памяти, но как происходят эти мистические изменения он объяснить не может.

    Ioann_Zid, 01 Мая 2018

    Комментарии (13)
  7. Си / Говнокод #24192

    −10

    1. 1
    Вопрос

    Кто знает, как динамически выделить память, заполнить её нужными инструкциями, и исполнить этот код, не испытав при этом анальной боли и не получить Segmentation Fault ?

    yet_another_one_shit, 23 Апреля 2018

    Комментарии (19)
  8. Си / Говнокод #24160

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    // ...
    int datastack [ 4096 ] ;
    int *dp = datastack ;
    
    int push ( int x ) {
        return *dp++ = x ;
    }
    
    int pop() {
        return *--dp ;
    }
    
    // ...
    
    void execute() {
        ((void(*)())pop())() ;
    }
    
    // ...

    Мама! Мама! Я покакал!

    yet_another_one_shit, 20 Апреля 2018

    Комментарии (5)
  9. Си / Говнокод #24150

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    char *r_or_mem() {
        if ( get_mod() == 3 )
            return regs [ ( size << 3 ) | ( look & 7 ) ] ;
        else {
            static char buf [ 32 ] ;
            char *s = buf ;
            *s++ = '[' ;
            if ( ! ( look & 4 ) ) {
                *s++ = 'B' ;
                *s++ = ( look & 2 ) ? 'P' : 'X' ;
                *s++ = '+' ;
                *s++ = ( look & 1 ) ? 'D' : 'S' ;
                *s++ = 'I' ;
                if ( mod ) *s++ = '+' ;
            } else {
                if ( ( look & 7 ) == 6 && ! mod ) mod = 2 ;
                else {
                    if ( look & 2 ) {
                        *s++ = 'B' ;
                        *s++ = ( look & 1 ) ? 'X' : 'P' ;
                    } else {
                        *s++ = ( look & 1 ) ? 'D' : 'S' ;
                        *s++ = 'I' ;
                    }
                    if ( mod ) *s++ = '+' ;
                }
            }
            if ( mod ) {
                read_value ( s , mod == 2 ) ;
                s = s + strlen ( s ) ;
            }
            *s++ = ']' ;
            *s = 0 ;
            return buf ;
        }
    }
    
    void checkorder() {
        if ( ! dest ) {
            char *tmp = op1 ;
            op1 = op2 ;
            op2 = tmp ;
        }
    }
    
    void rm ( char *s ) {
        sprintf ( decoded , "%s\t" , s ) ;
        decoded += strlen ( decoded ) ;
        get_ds() ;
        read() ;
        op1 = get_reg() ;
        op2 = r_or_mem() ;
        checkorder() ;
        sprintf ( decoded , "%s , %s" , op1 , op2 ) ;
    }

    Чассть моего дизассемблера для 16-анального x86, что читает операндыы.

    yet_another_one_shit, 19 Апреля 2018

    Комментарии (61)
  10. Си / Говнокод #24140

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    #include <stdio.h>
    
    struct struct2 {
    	struct struct1 a ;
    } ;
    
    struct struct1 {
    	struct struct2 a ;
    	int b ;
    } ;
    
    
    int main(){
    	struct struct1 a ;
    	scanf ( "%d" , &a.a.a.b ) ;
    	printf ( "%d" , a.b ) ;
    	return 0;
    }

    Все, кроме TCC для C4droid, отказались это компилировать, не пробовал только Visual Studio

    yet_another_one_shit, 17 Апреля 2018

    Комментарии (13)