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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
tsvet123
Сообщений: n/a
#1

Некоторое число оканчивается на 2 - C++

23.12.2012, 13:20. Просмотров 2575. Ответов 15
Метки нет (Все метки)

напишите 2 задачки пожалуйста
1)Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится.Найти это число.
2)Найти количество делителей натурального числа N больших K
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 13:20     Некоторое число оканчивается на 2
Посмотрите здесь:
Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится. Найти это число C++
C++ Оканчивается ли число на 1?
Выяснить нечетное ли число и оканчивается ли на 6. C++
Проверка на какую цифру оканчивается число C++
C++ Найти, на сколько нулей оканчивается число N
Определить оканчивается ли целое число цифрой 7 C++
C++ Дано натуральное число. Определить оканчивается ли оно цифрой 7 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
23.12.2012, 14:06     Некоторое число оканчивается на 2 #2
2)решение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
    int N, K;
    int count = 0;
    std::cout << "Enter N\n";
    std::cin >> N;
    std::cout << "Enter K\n";
    std::cin >> K;
    
    for (int i = K + 1; i < N; ++i) 
    {
        if (N%i == 0)
            count++;
    }
    std::cout << "number of dividers: "<< count << std::endl;
    system("pause");
    return 0;
}
1) минут 10 писал код, который ничего толкового не выдавал. Потом задался вопросом: а такие числа вообще существуют?
Доказал, что их нет. Ни среди положительных, ни среди отрицательных.
Issues
23.12.2012, 14:30
  #3

Не по теме:

SummerRain, только что сделал 1 программу, походу таких чисел реально нет. Или я что то путаю?

SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
23.12.2012, 14:42     Некоторое число оканчивается на 2 #4
дык и я о том же. И мы сейчас по теме говорим. У меня код тоже ничего не выдал, когда перебирал числа.
А потом я на листочке бумаги доказал, что таких чисел нет.

P.S. доказательство выкладывать?
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
24.12.2012, 15:38     Некоторое число оканчивается на 2 #5
Выложи, если не сложно

Добавлено через 18 минут
я нашла в интернете
Если честно ничего не поняла..но может кому то поможет разобраться...
Вот такой ответ:
Некоторое число оканчивается на 2. Если же его последнюю цифру переставить на первое место, то число удвоится. Найдите это число.
Ответ: Так как при перенесении цифры 2 на первое место число удваивается, то предпоследняя цифра его должна быть 8 ( 2 х 4 = 8), перед ней 6 ( 8 х 2 = 16), затем 3 (1 + 2 х 6 ) = 13, затем 7 (1 + 2 х 3 = 7) и так далее. Наше число должно начинаться с 1. Поэтому следует остановиться, когда после удвоения цифры и добавления 1 от цифры предыдущего разряда мы получим 1.
Искомое число: 105 263 157 894 736 842
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:09     Некоторое число оканчивается на 2 #6
вот код который ищет это число среди трёхзначных чисел. И он ничего не выдаёт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main()
{
    int x;
    for (x = 100; x < 1000; ++x)
    {
        if (x - x / 10 * 10 == 2 && x * 2 == x/10 + 200)
            std::cout << x << endl;
    }
 
    system ("pause");
    return 0;
}
а доказывал я на листочке, переписывать сюда как-то лень.

Добавлено через 17 минут
Цитата Сообщение от tatyana_12 Посмотреть сообщение
Выложи, если не сложно

Добавлено через 18 минут
я нашла в интернете
Если честно ничего не поняла..но может кому то поможет разобраться...
Вот такой ответ:
Некоторое число оканчивается на 2. Если же его последнюю цифру переставить на первое место, то число удвоится. Найдите это число.
Ответ: Так как при перенесении цифры 2 на первое место число удваивается, то предпоследняя цифра его должна быть 8 ( 2 х 4 = 8), перед ней 6 ( 8 х 2 = 16), затем 3 (1 + 2 х 6 ) = 13, затем 7 (1 + 2 х 3 = 7) и так далее. Наше число должно начинаться с 1. Поэтому следует остановиться, когда после удвоения цифры и добавления 1 от цифры предыдущего разряда мы получим 1.
Искомое число: 105 263 157 894 736 842
хм... среди таких больших чисел я не искал.
Сейчас разберёмся
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
24.12.2012, 16:17     Некоторое число оканчивается на 2 #7
Цитата Сообщение от tsvet123 Посмотреть сообщение
последнюю цифру переставить на первое место
Что это означает? Мы число 10002 превратим в 20002 или в 21000?
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:18     Некоторое число оканчивается на 2 #8
10526 21052 * 2 = 2 105 242 104
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
24.12.2012, 16:23     Некоторое число оканчивается на 2 #9
SummerRain, и?
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:27     Некоторое число оканчивается на 2 #10
Цитата Сообщение от HighPredator Посмотреть сообщение
SummerRain, и?
там кто-то сообщение написал с выводом своего числа. Видимо удалил.
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
24.12.2012, 16:37     Некоторое число оканчивается на 2 #11
SummerRain, я про ваше спрашивал. Вы считаете оно подходит под условие задачи?
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 18:50     Некоторое число оканчивается на 2 #12
вообщем что-то большие числа у меня тупят. использовал long long, __int64.
значит надо немного математики.
число Х1 имеет вид А1 А2 А3 ... Аn 2.
число Х2 имеет вид 2 А1 А2 А3 ... Аn.
Т.е. X1 = A1 * 10^n + A2 * 10^(n-1) + A3 * 10^(n-1) + ... + An * 10 + 2;
X2 = 2 * 10^n + A1 * 10^(n-1) + A2 * 10^(n-1) + A3 * 10^(n-2) + ... + An;
а т.к. Х2 = Х1*2, то 19*10^(n-1)A1 + 19*10^(n-2)A2 + 19*10^(n-3)A3 + ... + 19An = 2 * 10^n - 2*2;

выносим за знак скобок общий множитель 19 и получаем:
19(10^(n-1)A1 + 10^(n-2)A2 + 10^(n-3)A3 + ... + An) = 2 * 10^n - 4;
т.е. число вида 2 * 10^n - 4 должно делиться на 19 без остатка. Осталось всего навсего найти n. а полученое частно от деления и есть наше число.
Естественно, двойку в конце надо прописать.

щас напишу код поиска.

Добавлено через 16 минут
Цитата Сообщение от HighPredator Посмотреть сообщение
SummerRain, я про ваше спрашивал. Вы считаете оно подходит под условие задачи?
а я ещё не предлагал чисел. Я лишь говорил, что их нет. Оказалось, что есть

не знаете, почему этот код не выдаёт ответа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <math.h>
 
int main()
{
    double n;
    for (n = 1; n < 20; ++n)
    {
        if ((long long int)((pow(10.0, n)) * 2 - 4) % 19 == 0)
            std::cout << n;
    }
    
    system ("pause");
    return 0;
}
при n == 18 получается число кратное 19. На калькуляторе проверял

Добавлено через 1 час 1 минуту
этот код выполняется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
#include <stdio.h>
 
int main()
{
    long long int x = 100;
    long long int y = x * 2;
    long long int z = x * 10;
    int width=20;   
    for (long long int i = x; i < z; ++i)
    {
        if (i * 2 == i/10 + y)      
            printf("%0*lli", width, i);
    }
    system ("pause");
    return 0;
}
выдаёт 105 (правильно) т.к. условия проверки последней цифры 2 нету.
а вот этот уже нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <math.h>
#include <stdio.h>
 
int main()
{
    long long int x = 100000000000000000;
    long long int y = x * 2;
    long long int z = x * 10;
    int width=20;   
    for (long long int i = x; i < z; ++i)
    {
        if (i * 2 == i/10 + y)      
            printf("%0*lli", width, i);
    }
    system ("pause");
    return 0;
}
Добавлено через 1 минуту
не хватает производительности компа?
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,411
Записей в блоге: 3
24.12.2012, 20:08     Некоторое число оканчивается на 2 #13
SummerRain, не понимаю, что именно вы пытаетесь сделать. Аналитическое решение же приведено. Причем довольно понятно. В коде это выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
using namespace std;
 
int main()
{
    unsigned __int64 digit=2;
    unsigned __int64 step=10;
    unsigned int t=2;
    int prev=0;
    do
    {
        digit=digit+(step*(t*2%10+prev));
        prev=t*2/10;
        t=digit/step;
        step*=10;
    }
    while(!((t==1)&&(prev==0)));
    cout<<digit<<endl;
    getchar();
    return 0;
}
На выходе имеем искомое число.
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
25.12.2012, 09:02     Некоторое число оканчивается на 2 #14
Спасибо)

Добавлено через 41 секунду
А если не сложно, можете объяснить код? Просто не очень разобралась
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
25.12.2012, 10:03     Некоторое число оканчивается на 2 #15
всё по тому же решению, что вы привели.
digit - искомое число, которое мы открываем по-одной цифре за шаг.
prev - остаток от деления на 10 удвоенного произведения текущей цифры t.
t - текущая цифра этого в числа.
Т.е. допустим у нас идёт 4 шаг. Мы открыли последние 4 цифры (6842).
digit = 6842, prev = 1 (6*2/10), t = 6 (6842/1000), step = 10000 (1000*10),
получаем следующее число digit = 6842 + (10000 * (6*2%10 + 1)) = 6842 + (10000 * (2 + 1)) = 36842.
и так цикл продолжается до тех пор, пока текущая цифра не окажется равной 1, и предыдущая 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 20:10     Некоторое число оканчивается на 2
Еще ссылки по теме:
Определить, на какую цифру, чётную или нечётную, оканчивается число C++
C++ Задумано некоторое число
Написать программу, которая определяет, оканчивается ли данное целое число цифрой 7 C++
C++ Числовой ряд и некоторое число е.
C++ Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...)

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

Или воспользуйтесь поиском по форуму:
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
25.12.2012, 20:10     Некоторое число оканчивается на 2 #16
Спасибо огромное)
Yandex
Объявления
25.12.2012, 20:10     Некоторое число оканчивается на 2
Ответ Создать тему
Опции темы

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