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

    −52

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main()
    {
       int i,n,a,b,f=0,k=0;
    
       scanf("%d",&n);
    
       for(i=1;i<=n;i++){
       }
    
       while(i!=0){
        i=i/10;
        f++;
       }
    
        while(i<=n){
    
        a=a/10;
        b=b/10;
        a=a%10;
        b=b%10;
    
        i=a%(pow(10,f))+b*(pow(10,f));
        if(i%a==0&&i%b==0)k++;
    
        i=i/10;
        i=i%10;
    }
        printf("%d",k);
    
        return 0;
    }

    Найти количество натуральных чисел, не превосходящих N, и делящихся на каждую из своих цифр.

    Запостил: plkvich691, 30 Октября 2016

    Комментарии (6) RSS

    • Я у мамы программист:
      <?php
      
      echo getQuantity(0, 1000000) . PHP_EOL;
      
      function getQuantity(int $min, int $max): int {
              if ($min > $max) {
                  return 0;
              }
      
              for ($i = $number = $min; $i <= $max; $i++, $number = $i) {
                  for ( ; $number > 0; $number /= 10) {
                      @$digit = $number % 10;
                      if (!$i || !$digit) {
                          continue;
                      }
                      if ($i % $digit) {
                          continue 2;
                      }
                  }
                  @$quantity += 1;
              }
              return $quantity;
          }
      ?>
      Ответить
      • <?php
        # -_-
        echo getQuantity(0, 10000000) . PHP_EOL;
        
        function getQuantity(int $min, int $max): int {
            if ( $min > $max ) {
                return 0;
            }
        
            for ( $i = $number = $min; $i < $max; $i += 1, $number = $i ) {
                for ( ; $number > 0; $number /= 10 ) {
                    @$digit = $number % 10;
                    if ( !$i || !$digit ) {
                        continue;
                    }
                    if ( $i % $digit ) {
                        continue 2;
                    }
                }
                @$quantity += 1;
            }
            return $min <= 0? $quantity - 1: $quantity;
        }
        
        ?>
        Ответить
      • guest?
        Ответить
    • показать все, что скрытолабы не нужны
      Ответить
    • > a=a/10;
      > b=b/10;
      > a=a%10;
      > b=b%10;
      >
      > i=a%(pow(10,f))+b*(pow(10,f));
      > if(i%a==0&&i%b==0)k++;
      >
      > i=i/10;
      > i=i%10;
      Похоже, задачу попытались решить полным перебором всех решений.
      Ответить
      • Я всегда так делаю.

        Пытаюсь разные значки подставить и смотрю чтобы результат был правильный. У меня просто памяти плохая, я не всегда помню какой значок за что отвечает
        Ответить

    Добавить комментарий