В заданном интервале найти числа, которые состоят из разных цифр - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задали задачу. В голове вертится решение, но записать в коде не хватает знаний. Помогите, буду разбирать код. Создайте программу, которая находит все n-значные числа ( 2 <= n <= 9 ), которые: 1) состоят из разных цифр; 2) являются кубом натульного числа.

Решение задачи: «В заданном интервале найти числа, которые состоят из разных цифр»

textual
Листинг программы
#include <stdio.h>
 
int is_cube(unsigned n) {
    unsigned i, cube;
    
    for ( i = 2; ( cube = i * i * i ) < n; ++i )
        ;
        
    return ( cube == n );
}
 
int have_same_digits(unsigned n) {
    unsigned num, last;
    
    while ( n ) {
        for ( num = n / 10, last = n % 10; num; num /= 10 )
            if ( last == num % 10 )
                return 1;
        n /= 10;
    }
    
    return 0;
}
 
#define START 10
#define STOP 1000000000
 
int main(void) {
    unsigned i;
    
    for ( i = START; i < STOP; ++i )
        if ( ! have_same_digits(i) && is_cube(i) )
            printf("%u\n", i);
    
    return 0;
}

Объяснение кода листинга программы

В данном коде на языке C выполняется следующая задача: в заданном интервале (от 10 до 1000000000) находятся все числа, которые состоят из разных цифр и являются кубами других чисел (то есть число n является кубом другого числа, если n = i i i, где i - некоторое число). Вот список действий, которые выполняются в коде:

  1. Функция is_cube() проверяет, является ли число кубом другого числа. Она использует цикл for, который выполняется до тех пор, пока куб текущего числа меньше заданного числа n. Внутри цикла ничего не происходит, и это просто условие для продолжения выполнения функции.
  2. Функция have_same_digits() проверяет, состоят ли все цифры числа из одинаковых цифр. Она использует два цикла: внешний цикл while, который выполняется до тех пор, пока число больше 0, и внутренний цикл for, который проверяет каждую цифру числа. Если последняя цифра числа равна текущей цифре, то функция возвращает 1.
  3. В функции main() определяются две константы: START (начало интервала) и STOP (конец интервала). Затем используется цикл for для перебора всех чисел в заданном интервале. Если число не имеет одинаковых цифр и является кубом другого числа, то оно выводится на экран. Таким образом, данный код находит все числа в заданном интервале, которые состоят из разных цифр и являются кубами других чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы