Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
marko666
0 / 0 / 0
Регистрация: 26.10.2015
Сообщений: 4
#1

Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 - C++

26.10.2015, 07:19. Просмотров 412. Ответов 13
Метки нет (Все метки)

Найти все трехзначные числа из промежутка (100; 750), такие,
что произведение их первой и последней цифр равно 12.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2015, 07:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 (C++):

Из заданного промежутка найти все числа произведение цифр которых равно заданному - C++
Пользователь вводит х, a, b. Из промежутка от a до b найти все числа, произведение цифр которых по модулю дает х. #include...

Найти все целые числа из промежутка от a до b, у которых количество делителей равно k - C++
Все привет. Прошу помочь с заданием не могу понять как делать. 1.Найти все целые числа из промежутка от a до b, у которых количество...

Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N - C++
Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N (N вводить с клавиатуры).

Найти и вывести числа произведение цифр которых равно их сумме! - C++
Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает с суммой цифр...

Найти все трехзначные числа,средняя цифра которых равна сумме первой и второй цифры - C++
найти все трехзначные числа,средняя цифра которых равна сумме первой и второй цифры

Найти все натуральные числа из промежутка от 1 до 200, у которых сумма цифр равна S - C++
Найти все натуральные числа из промежутка от 1 до 200, у которых сумма цифр равна S (S вводить с клавиатуры).

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Redzep
197 / 133 / 54
Регистрация: 21.12.2014
Сообщений: 369
26.10.2015, 09:51 #2
C++
1
for (int i = 100; i <=750; i++) if ((i/100)*(i%10)==12) cout << i << endl;
Байт
Эксперт C
15984 / 10252 / 1536
Регистрация: 24.12.2010
Сообщений: 19,336
26.10.2015, 19:42 #3
Предпочитаю генерацию перебору...
C++
1
2
3
4
int a[4] = {1, 2, 3, 6 };
for(int i=0; i<4; i++)
 for(int j=0 ; j<10; j++)
   cout << 100*a[i] + 10*j + 6/a[i] << endl;
Добавлено через 6 часов 17 минут
Прошу прощения. Или я не так прочитал, или померещилось, но я решил задачу
"Найти все трехзначные числа, произведение первой и последней цифр которых равно 6"
В правильной постановке решение будет выглядеть так:
C++
1
2
3
4
5
6
int a[4] = { 2, 3, 4, 6 };
for(int i=0; i<4; i++)
 for(int j=0 ; j<10; j++) {
   int n = 100*a[i] + 10*j + 12/a[i];
   if (n <= 750) cout << n << endl;
 }
Добавлено через 38 секунд
Хотя, если подумать, проверка n <=750 не нужна.
Vtulhu
370 / 376 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
26.10.2015, 20:13 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
using namespace std;
 
int main()
{
    int i, j, k, n;
    for (i = 1; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            for (k = 0; k < 10; k++) {
                if (i * k == 12) {
                    n = 100 * i + 10 * j + k;
                    if (n <= 750) {
                        cout << n << endl;
                    }
                }
            }
        }
    }
    return 0;
}
Байт
Эксперт C
15984 / 10252 / 1536
Регистрация: 24.12.2010
Сообщений: 19,336
26.10.2015, 21:22 #5
Vtulhu, ваш код конечно работать будет. Но аналогичные ему уже здесь есть. И значительно компактнее оформлены. См. пост 3.
Но вы, с вашим опытом и репутацией, неужели не поняли, что здесь борются 2 подхода? Перебор и Генерация.
Вы сторонник Перебора? - Перебирайте. А я буду - Генерировать! А что эффективнее и интереснее - Жизнь рассудит!
Vtulhu
370 / 376 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
26.10.2015, 22:08 #6
Мне кажется, мой код - разумный компромисс между перебором и генерацией, простотой и эффективностью.
Байт
Эксперт C
15984 / 10252 / 1536
Регистрация: 24.12.2010
Сообщений: 19,336
26.10.2015, 22:19 #7
Цитата Сообщение от Vtulhu Посмотреть сообщение
Мне кажется,
Это вам только кажется...
nonedark2008
26.10.2015, 22:22
  #8

Не по теме:

Цитата Сообщение от Vtulhu Посмотреть сообщение
разумный компромисс между перебором и генерацией, простотой и эффективностью
Ересь. Код будет менее эффективным, чем оба варианта выше, так что компромиссом его не назовешь.

Байт
Эксперт C
15984 / 10252 / 1536
Регистрация: 24.12.2010
Сообщений: 19,336
26.10.2015, 22:40 #9
Код уважаемого Vtulhu можно критиковать с разных сторон. Но вот этот кусок особенно запал в мою нежную душу
C++
1
2
3
4
for (i = 1; i < 10; i++) {
        for (j = 0; j < 10; j++) {
            for (k = 0; k < 10; k++) {
                if (i * k == 12) {
Какого, собственно..., проверку опускать так низко? Не лучше ли циклы переставить?
И, конечно, любое замечание его об эффективности надо воспринимать, предварительно запасшись здоровым чувством юмора
_Ivana
3057 / 1744 / 151
Регистрация: 01.03.2013
Сообщений: 4,925
Записей в блоге: 2
26.10.2015, 23:33 #10
Эффективность, говорите? Компромисс?
C++
1
2
3
4
auto f = [](int i, const auto& la) -> int {
    if (i<100) {cout<<206+i<<'\n'<<602+i<<'\n'<<304+i<<'\n'<<403+i<<'\n';
        la(i+10,la);}};
f(0,f);
Желающие могут перевести в цикл.

ЗЫ про код уважаемого я тоже подумал, как только его увидел, но решил не писать свои впечатления.
Байт
Эксперт C
15984 / 10252 / 1536
Регистрация: 24.12.2010
Сообщений: 19,336
26.10.2015, 23:43 #11
_Ivana, ваших кодов мне уже, как я понимаю, не понять. Я смирился. Я вам верю. Скорее всего, это - здорово!
Цитата Сообщение от _Ivana Посмотреть сообщение
про код уважаемого я тоже подумал
Да я б ни слова не сказал! Но он же попытался оправдываться! А вот это - неправильно. Ошибся (кто без грехов!) - склони голову, покайся. Или промолчи, если гордый. Но оправдываться?! - себя не уважать!
_Ivana
3057 / 1744 / 151
Регистрация: 01.03.2013
Сообщений: 4,925
Записей в блоге: 2
26.10.2015, 23:47 #12
Байт, в традиционном варианте это выглядит вот так
C++
1
2
for (int i=0; i<100; i+=10)
    cout<<206+i<<'\n'<<602+i<<'\n'<<304+i<<'\n'<<403+i<<'\n';
(но я же, как Вы помните, дал обет не использовать циклы )
nonedark2008
26.10.2015, 23:50
  #13

Не по теме:

Цитата Сообщение от _Ivana Посмотреть сообщение
традиционном варианте это выглядит
Цитата Сообщение от _Ivana Посмотреть сообщение
for
Цитата Сообщение от _Ivana Посмотреть сообщение
дал обет не использовать циклы
Грешник, нет тебе прощения!

_Ivana
26.10.2015, 23:52     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12
  #14

Не по теме:

Цитата Сообщение от Байт Посмотреть сообщение
Ошибся (кто без грехов!) - склони голову, покайся.
Каюсь, грешен. Ради донесения алгоритма только позволил себе.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 23:52
Привет! Вот еще темы с ответами:

Найти все трехзначные числа, состоящие из разных цифр, сумма которых равна А - C++
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма ровна А (число А вводится с клавиатуры).

Найти все трехзначные числа, сумма цифр которых равна данному целому числу - C++
Найти все трехзначные числа?сумма цифр которых равна данному целому числу! Ребята побыстрее надо, заранее спасибо!

Найти все трехзначные числа, сумма цифр которых равна заданному целому числу - C++
Задача: Найти все трехзначные числа, сумма цифр которых равна данному целому числу Решение: #include &lt;iostream&gt;; void main() { ...

Найдите все целые числа из промежутка от a до b, у которых число делителей равно k - C++
Найдите все целые числа из промежутка от a до b, у которых число делителей равно k. Если таковых нет, выведите «-1». Формат входных данных:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.10.2015, 23:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru