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

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

Восстановить пароль Регистрация
 
marko666
0 / 0 / 0
Регистрация: 26.10.2015
Сообщений: 4
26.10.2015, 07:19     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #1
Найти все трехзначные числа из промежутка (100; 750), такие,
что произведение их первой и последней цифр равно 12.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2015, 07:19     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12
Посмотрите здесь:

C++ Получить все трехзначные натуральные числа, сумма цифр которых равна m
C++ Найти и вывести числа произведение цифр которых равно их сумме!
C++ Получить все трехзначные натуральные числа, сумма цифр которых равна n
Найти все трехзначные числа, сумма цифр которых равна данному целому числу C++
Найти все натуральные числа из промежутка от 1 до 200, у которых количество делителей равно N C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Redzep
170 / 106 / 42
Регистрация: 21.12.2014
Сообщений: 312
26.10.2015, 09:51     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #2
C++
1
for (int i = 100; i <=750; i++) if ((i/100)*(i%10)==12) cout << i << endl;
Байт
 Аватар для Байт
13970 / 8801 / 1226
Регистрация: 24.12.2010
Сообщений: 15,944
26.10.2015, 19:42     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #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
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
26.10.2015, 20:13     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #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;
}
Байт
 Аватар для Байт
13970 / 8801 / 1226
Регистрация: 24.12.2010
Сообщений: 15,944
26.10.2015, 21:22     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #5
Vtulhu, ваш код конечно работать будет. Но аналогичные ему уже здесь есть. И значительно компактнее оформлены. См. пост 3.
Но вы, с вашим опытом и репутацией, неужели не поняли, что здесь борются 2 подхода? Перебор и Генерация.
Вы сторонник Перебора? - Перебирайте. А я буду - Генерировать! А что эффективнее и интереснее - Жизнь рассудит!
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
26.10.2015, 22:08     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #6
Мне кажется, мой код - разумный компромисс между перебором и генерацией, простотой и эффективностью.
Байт
 Аватар для Байт
13970 / 8801 / 1226
Регистрация: 24.12.2010
Сообщений: 15,944
26.10.2015, 22:19     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #7
Цитата Сообщение от Vtulhu Посмотреть сообщение
Мне кажется,
Это вам только кажется...
nonedark2008
26.10.2015, 22:22
  #8

Не по теме:

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

Байт
 Аватар для Байт
13970 / 8801 / 1226
Регистрация: 24.12.2010
Сообщений: 15,944
26.10.2015, 22:40     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #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
2185 / 1390 / 124
Регистрация: 01.03.2013
Сообщений: 4,136
Записей в блоге: 2
26.10.2015, 23:33     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #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);
Желающие могут перевести в цикл.

ЗЫ про код уважаемого я тоже подумал, как только его увидел, но решил не писать свои впечатления.
Байт
 Аватар для Байт
13970 / 8801 / 1226
Регистрация: 24.12.2010
Сообщений: 15,944
26.10.2015, 23:43     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #11
_Ivana, ваших кодов мне уже, как я понимаю, не понять. Я смирился. Я вам верю. Скорее всего, это - здорово!
Цитата Сообщение от _Ivana Посмотреть сообщение
про код уважаемого я тоже подумал
Да я б ни слова не сказал! Но он же попытался оправдываться! А вот это - неправильно. Ошибся (кто без грехов!) - склони голову, покайся. Или промолчи, если гордый. Но оправдываться?! - себя не уважать!
_Ivana
2185 / 1390 / 124
Регистрация: 01.03.2013
Сообщений: 4,136
Записей в блоге: 2
26.10.2015, 23:47     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12 #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 Посмотреть сообщение
дал обет не использовать циклы
Грешник, нет тебе прощения!

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 23:52     Найти все трехзначные числа из промежутка, произведение первой и последней цифр которых равно 12
Еще ссылки по теме:

Найти все трехзначные числа, состоящие из разных цифр, сумма которых равна А C++
Найти все целые числа из промежутка от a до b, у которых количество делителей равно k C++
Найти все натуральные числа из промежутка от 1 до 200, у которых сумма цифр равна S C++

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

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

Не по теме:

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

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

Текущее время: 18:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru