Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
1

Сколько чисел между n и m (n<m) состоит только из нечетных цифр

14.11.2014, 19:05. Показов 4103. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем.я всё не могу додумать как правлиьно написать программу со вложенными циклами.
Условие:
Сколько чисел между n и m (n<m) состоит только из нечетных цифр. Выведите на экран эти числа.

Решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
void main ()
{
    setlocale(0, "Russian");
    int n,m,s=0;
    printf("\nЧисла n и m равны: ");
    scanf_s("%d%d",&n,&m);
    for (int i=n;i<=m;i++)
    {   
    if(i%2!=0) s++;
    }
    printf("\nЧисло нечетных чисел: %d%",s);
    _getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.11.2014, 19:05
Ответы с готовыми решениями:

Определить, состоит ли число из четных и нечетных цифр
В диалоговом режиме задается длинное целое число A Определить, состоит ли число из четных и...

Выяснить, сколько существует n-значных чисел, которые состоят только из нечётных цифр
&quot;Хорошим&quot; будем считать число, которое состоит только из нечетных цифр. Например число 157953...

Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?
Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?

Определить, сколько чисел между m и n (m<n) состоит из нечетных цифр
Собственно задача звучит так: К сожалению лекцию по &quot;Функциям&quot; я проболел и то, что мог...

37
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
14.11.2014, 23:27 21
Author24 — интернет-сервис помощи студентам
А мне вот это сообщение, прошедшее скромно и неприметно, нравится
Цитата Сообщение от Dani Посмотреть сообщение
Вроде бы можно без циклов перебора числа.
Сейчас попробую написать.
Вместо проверок всех (пусть даже только нечетных) числе в огромном диапазоне, можно просто их генерировать из нечетных цифр и считать количество - будет и красиво и быстро Вот только писать я не буду, ибо буквально сейчас есть другие игрушки
0
1405 / 647 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
14.11.2014, 23:43 22
Пришлось помучаться с кодом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
 
typedef unsigned long long int ull;
ull dp[20] = {1};
 
 
int CountDigits(ull x)
{
    if(!x)
        return 1;
    int result = 0;
    while(x)
    {
        ++result;
        x /= 10;
    }
    return result;
}
 
 
ull Count(ull x, int length, ull pow10)
{
    if(length == 0)
        return 0;
    if(length == 1)
        return (x + 1) >> 1;
 
    ull ans = dp[length - 1];
    
    int digit;
    if(digit = (x / pow10) % 10)
        ans += ((digit - 1) >> 1) * dp[length - 1];
    if((pow10 == 1 && digit >= 1) || ((digit & 1) == 0 && digit > 0))
    {
        ans += dp[length - 1];
    }
    else if(digit & 1)
    {
        ans += Count(x % pow10, length - 1, pow10 / 10);
    }
    
    return ans;
}
 
 
ull Count(ull x)
{
    ull pow10 = 1;
    int length = CountDigits(x);
    for(int i = 1; i < length; ++i)
        pow10 *= 10;
    return Count(x, length, pow10);
}
 
 
int main()
{
    for(int i = 1; i < 20; ++i)
        dp[i] = dp[i - 1] * 5;
    ull l, r;
    std::cin >> l >> r;
    std::cout << Count(r) - Count(l - 1) << std::endl;
    return 0;
}

Цитата Сообщение от _Ivana Посмотреть сообщение
Вместо проверок всех (пусть даже только нечетных) числе в огромном диапазоне, можно просто их генерировать из нечетных цифр и считать количество - будет и красиво и быстро Вот только писать я не буду, ибо буквально сейчас есть другие игрушки
Я имел ввиду вообще без генерации чисел

Похоже, что сложность получилась O(1)
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
14.11.2014, 23:44  [ТС] 23
ребят а для чего вы ретурн используете?просто не до конца понимаю его сути
0
11 / 11 / 10
Регистрация: 16.12.2013
Сообщений: 66
14.11.2014, 23:52 24
Fore, return "значение" - возвращает определенное значение, а просто return - передает управление вызывающей функции
0
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
14.11.2014, 23:52 25
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
bool isAllDigitsOdd(int n);
 
int main()
{
    int n = 0, m = 20;
 
    for (int i = n; i < m; ++i) {
        if (isAllDigitsOdd(i)) {
            std::cout << i << std::endl;
        }
    }
 
    return 0;
}
 
bool isAllDigitsOdd(int n)
{
    for (; n != 0; n /= 10) {
        if (!((n % 10) % 2)) {
            return false;
        }
    }
    return true;
}
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
14.11.2014, 23:57 26
предлагаю для разнообразия такой вариант проверки
как известно, произведение нечетных чисел есть число нечетное
так вот, перемножить все разряды и проверить результат
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool Veryfy(int x)
{
int p=1;
if(x==0)
  return false;
while(x)
{
 p*=x%10;
 x/=10;
}
return p%2;
}
2
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
19.11.2014, 00:01  [ТС] 27
ребят а вот как мне этот код исправить чтобы всё работало,потому что не могу понять что неправильно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//programm 12
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 
void main ()
{
    
    
    int n,m,k,i,s=0;
 
    setlocale(0,"russian");
    printf("Введите числа n и m:");
    scanf("%d%d",&n,&m);
    for(i=n;i<=m;i++)
    {
        while(i>0)
        
        {
        k=i%10;
        if (k%2!=0) 
        {
        s=s+1;
        printf("%d",s);
        }
            
        i/=10;
        }
    
    }
    getch();
    
}
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
19.11.2014, 06:59 28
Цитата Сообщение от Fore Посмотреть сообщение
что не могу понять что неправильно
Цитата Сообщение от Fore Посмотреть сообщение
s=s+1;
что ты здесь складываешь?
Цитата Сообщение от Fore Посмотреть сообщение
i/=10;
здесь i портится, в результате внешний цикл вечен
0
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
19.11.2014, 13:44  [ТС] 29
складываю количество чисел с нечётными цифрами

Добавлено через 5 минут
просто надо эту задачу немного проще решить.....чем вы предложили варианты..
0
Модератор
Эксперт по электронике
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,524
19.11.2014, 14:17 30
Цитата Сообщение от Fore Посмотреть сообщение
складываю количество чисел с нечётными цифрами
Зачем???

да и не складываешь ты
здесь складываются количество нечетных разрядов
т.е одно число 1357 прибавит 4
а число 1234 которое не попадает под условие
Цитата Сообщение от Fore Посмотреть сообщение
состоит только из нечетных цифр.
прибавит 2
0
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
19.11.2014, 14:25  [ТС] 31
понял,что сумма не нужна....как то так попытался сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
 
void main ()
{
    
    
    int n,m,k,i;
 
    setlocale(0,"russian");
    printf("Введите числа n и m:");
    scanf("%d%d",&n,&m);
    
    
    for(i=n;i<m;i++)
    { if(i%2!=0) //если число нечётное то выполняем следующее
        {
        while(i>0)
     {
        
        k=i%10;
        if (k%2!=0) //если цифра нечётного чмсла нечётна,то печатаем i
        {
       
        printf("%d",i);
        i/=10;
        
         }
        
      }
    
        
        }
    }
    
    getch();
    
}
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 16
19.11.2014, 17:36 32
Как-то не по-русски написано условие...Как я понял вводим например 10 и 15 значит между ними нечетные числа 11,13?Выводим ответ 2?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
19.11.2014, 17:51 33
Цитата Сообщение от bloodxakep Посмотреть сообщение
Как-то не по-русски написано условие...Как я понял вводим например 10 и 15 значит между ними нечетные числа 11,13?Выводим ответ 2?
именно так и написано в условии, только вывести нужно не их кол-во а сами числа

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
using namespace std;
 
int check(int value) {
    int temp;
    
    for ( ; value != 0; ) {
        temp = value % 10;
        if ( temp % 2 == 0 ) {
            return 0;
        }
        value /= 10;
    }
    return 1;
}
 
int main() {
    int n, m;
    
    cin >> n >> m;
    
    for ( int i = n+1; i < m; i++ ) {
        if ( check(i) ) {
            cout << i << endl;
        }
    }
    
    return 0;
}
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 16
19.11.2014, 17:52 34
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
main ()
{
    setlocale(0, "Russian");
    int n,m,s=0;
    printf("\nЧисла n и m: ");
    scanf("%d%d",&n,&m);
    if (n>m) printf("Значение n больше чем m");else if (n+1==m) printf("Нет пространства для подсчета=)");else for (int i=n+1;i<m;i++)
    {   
        
    if(i%2==1) printf("%d ",i);
    }
    getch();
}
Работает на все случаи жизни)
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
19.11.2014, 18:05 35
Цитата Сообщение от bloodxakep Посмотреть сообщение
Работает на все случаи жизни)
Условие:
Сколько чисел между n и m (n<m) состоит только из нечетных цифр.
Это значит, что если, например, попадется нечетное число 121 то в нём есть чётная цифра 2, которая не соответствует условию.
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 16
19.11.2014, 18:31 36
Цитата Сообщение от Darkrduk Посмотреть сообщение
Это значит, что если, например, попадется нечетное число 121 то в нём есть чётная цифра 2, которая не соответствует условию.
Ааа...Теперь понял)

Добавлено через 23 минуты
Тогда вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
main ()
{int a,a1,a2;
    setlocale(0, "Russian");
    int n,m,s,d,k,t=0;
    printf("\n×èñëà n è m: ");
    scanf("%d%d",&n,&m);
    if (n>m) {printf("Çíà÷åíèå n áîëüøå ÷åì m");t=1;} else if (n+1==m) {printf("Íåò ïðîñòðàíñòâà äëÿ ïîäñ÷åòà=)");t=1;} else for (int i=n;i<m;i++)
    {   
    a=i;
     while (a>0) {
     a1=a/10;
     a2=a-a1*10;
     a=a1;
     if (a2%2==1) k++;
     d++;
     }     
     if (d==k) {printf("%d ",i);t++;}   
     d=0;
     k=0;
    }
    getch();
}
0
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 23
19.11.2014, 22:12  [ТС] 37
просто я плохо ориентуруюсь с функцией return....по условию надо использовать вложенные циклы....
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
20.11.2014, 12:10 38
Цитата Сообщение от Fore Посмотреть сообщение
просто я плохо ориентуруюсь с функцией return....по условию надо использовать вложенные циклы....
То же самое, как и с функцией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
int main() {
    int n, m, temp, last;
    bool flag = true;
    
    cin >> n >> m;
    
    for ( int i = n+1; i < m; i++ ) {
        temp = i;
        for ( ; temp != 0; ) {
            last = temp % 10;
            if ( last % 2 == 0 ) {
                flag = false;
            }
            temp /= 10;
        }
        if ( flag == true ) {
            cout << i << endl;
        }
        flag = true;
    }
    
    return 0;
}
0
20.11.2014, 12:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2014, 12:10
Помогаю со студенческими работами здесь

Сколько чисел между 1000 и 100000 состоят из нечетных цифр, а сколько из различных цифр?
Написала программу, но где-то есть ошибочка... не могу понять где, может кто-нибудь...

Выяснить, сколько натуральных чисел состоит из нечётных цифр и сколько из различных цифр
Выяснить, сколько натуральных чисел между n и m&gt;n состоит из нечётных цифр и сколько из различных...

Сколько существует четырехзначных десятичных чисел, в каждом из которых четных цифр столько же, сколько и нечетных
2) Сколько существует четырехзначных десятичных чисел, в каждом из которых четных цифр столько же,...

Найти сумму нечетных цифр числа Определить состоит ли число из одинаковых цифр
Помогите написать прогу. Найти сумму нечетных цифр числа Определить состоит ли число из...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru