Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
tsvet123
0 / 0 / 0
Регистрация: 20.12.2012
Сообщений: 1
#1

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

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

напишите 2 задачки пожалуйста
1)Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится.Найти это число.
2)Найти количество делителей натурального числа N больших K
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2012, 13:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Некоторое число оканчивается на 2 (C++):

Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить на первое место, то число удвоится. Найти это число
Некоторое число оканчивается на 2. Если же эту его последнюю цифру переставить...

Оканчивается ли число на 1?
Помогите пожалуйста с алгоритмом, мне нужно определить, когда число...

Выяснить нечетное ли число и оканчивается ли на 6.
Хелп,что-то не доходит как решить задачку с помощью вайл,фор. 1.Дано...

Проверка на какую цифру оканчивается число
Задание: сделать проверку, является ли число кратным и при этом не...

Найти, на сколько нулей оканчивается число N
Вводится N. Необходимо найти, на сколько нулей оканчивается чило N! ...

Определить оканчивается ли целое число цифрой 7
1. Если целое число М делится нацело на целое число К, то вывести на экран ...

15
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
23.12.2012, 14:06 #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 писал код, который ничего толкового не выдавал. Потом задался вопросом: а такие числа вообще существуют?
Доказал, что их нет. Ни среди положительных, ни среди отрицательных.
0
Issues
23.12.2012, 14:30
  #3

Не по теме:

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

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

P.S. доказательство выкладывать?
0
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
24.12.2012, 15:38 #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
0
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:09 #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
хм... среди таких больших чисел я не искал.
Сейчас разберёмся
0
HighPredator
5648 / 1965 / 716
Регистрация: 10.12.2010
Сообщений: 5,697
Записей в блоге: 3
24.12.2012, 16:17 #7
Цитата Сообщение от tsvet123 Посмотреть сообщение
последнюю цифру переставить на первое место
Что это означает? Мы число 10002 превратим в 20002 или в 21000?
0
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:18 #8
10526 21052 * 2 = 2 105 242 104
0
HighPredator
5648 / 1965 / 716
Регистрация: 10.12.2010
Сообщений: 5,697
Записей в блоге: 3
24.12.2012, 16:23 #9
SummerRain, и?
0
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 16:27 #10
Цитата Сообщение от HighPredator Посмотреть сообщение
SummerRain, и?
там кто-то сообщение написал с выводом своего числа. Видимо удалил.
0
HighPredator
5648 / 1965 / 716
Регистрация: 10.12.2010
Сообщений: 5,697
Записей в блоге: 3
24.12.2012, 16:37 #11
SummerRain, я про ваше спрашивал. Вы считаете оно подходит под условие задачи?
0
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 18:50 #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 минуту
не хватает производительности компа?
0
HighPredator
5648 / 1965 / 716
Регистрация: 10.12.2010
Сообщений: 5,697
Записей в блоге: 3
24.12.2012, 20:08 #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;
}
На выходе имеем искомое число.
1
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
25.12.2012, 09:02 #14
Спасибо)

Добавлено через 41 секунду
А если не сложно, можете объяснить код? Просто не очень разобралась
0
SummerRain
327 / 326 / 92
Регистрация: 16.12.2012
Сообщений: 544
25.12.2012, 10:03 #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.
1
tatyana_12
1 / 1 / 0
Регистрация: 15.12.2012
Сообщений: 29
25.12.2012, 20:10 #16
Спасибо огромное)
0
25.12.2012, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 20:10
Привет! Вот еще темы с решениями:

Дано натуральное число. Определить оканчивается ли оно цифрой 7 C++
1. Дано натуральное число. Определить: -Оканчивается ли оно цифрой 7;...

Определить, является ли число четным или оканчивается цифрой 7
1)Дано натуральное число. Определить, является ли оно четным или оканчивается...

Определить, на какую цифру, чётную или нечётную, оканчивается число
Сделалано в DEV C++,нужно переделать в NetBeans IDE 1)задание: Дано...

Написать программу, которая определяет, оканчивается ли данное целое число цифрой 7
написать программу, которая определяет, оканчивается ли данное целое число...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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