С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
#1

6 последних ненулевых цифр числа 987654321 - C++

25.09.2010, 19:38. Просмотров 1125. Ответов 14
Метки нет (Все метки)

понимаю, что олимпиадная задача, но все же, натолкните на идею.

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
#include <iostream>
#include <math.h>
#include <gmp.h>
 
void mpz_nuli(mpz_t rop)
{
 
}
 
int main(int argc, char** argv)
{
 
    mpz_t i;
    mpz_init_set_ui(i, 1);
    mpz_t s;
    mpz_init_set_ui(s, 1);
    mpz_t temp;
    mpz_init_set_ui(temp, 1);
    mpz_t l;
    mpz_t dec;
    mpz_init_set_ui(dec, 10);
     do {
        mpz_add(i, i, temp);
        mpz_mul(s, s, i);
        //if(mpz_mod(l, s, dec)==0)
        //{
        //    do {
        //        mpz_tdiv_qr(s, l, s, dec);
        //    } while (l==0);
        //}
    } while (mpz_cmp_ui(i, 987654321) < 0);
 
     gmp_printf("%Zd\n", s);
     return 0;
}
Добавлено через 11 минут
похоже знаю, как решать, с начала хотел так сделать, но не сделал. не знаю почему, но зато познакомился с gmp.h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2010, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 6 последних ненулевых цифр числа 987654321 (C++):

Дано натуральные числа n и m. Определить суму m последних цифр числа n. - C++
Помогите решить при помощи циклов решить задачу: Дано натуральные числа n и m. Определить суму m последних цифер числа n.

Даны натуральные числа N и M(N > M).Найти сумму М последних цифр числа N. - C++
Прошу помочь решить задачки!:(очень нужно (Билет №23) Даны натуральные числа N и M(N &gt; M).Найти сумму М последних цифр числа N. ...

Даны натуральные числа n, m. Получить сумму m последних цифр числа n - C++
Даны натуральные числа n, m. Получить сумму m последних цифр числа n. с пояснениями в 2010 версии заранее спс! Добавлено через 31...

Написать программу: сумма первых трех цифр числа равна сумме его последних трех цифр. - C++
Получить все шестизначные счастливые номера. Счастливым называют такое шестизначное число, для которого сумма его первых трех цифр...

Определить, равна ли сумма первых двух цифр четырехзначного числа сумме двух последних цифр - C++
Определить, равна ли сумма первых двух цифр данного четырехзначного числа сумме двух его последних цифр. Создать программу, в которой...

составить линейную программу (сумма двух первых цифр заданного четырёхзначного числа равна сумме двух его последних цифр) - C++
составить линейную программу , печатающую значение true , если указанное высказывание является истинным , и false - в противном случае. ...

14
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
25.09.2010, 19:49 #2
Мб код предоставиет ?
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 05:46  [ТС] #3
код попзже выложу, как доделаю. а так все достаточно просто:
1) по мере необходимости избавляться от нулей в конце.
2)избавляться от всех цифр, кроме миллиардных, миллионных, тысячных, десятичных.

вроде все.
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:22 #4
Ух, ешкин дрын, но на мой взгляд не достаточно данных. для нормального подключения мозгов покрайней мере моих.
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:24  [ТС] #5
Десятичная запись числа 987654321! заканчивается на 246913573 нулей. Чему равны последние шесть ненулевых цифр?
вообще вот условие, и я только обратил внимание на число нулей.
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:32 #6
Цитата Сообщение от opensuse2008 Посмотреть сообщение
987654321!
как я понимаю, восклицательный знак здесь как математический оператор?
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:33  [ТС] #7
да, если быть точнее, то факториал.
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:40 #8
Цитата Сообщение от opensuse2008 Посмотреть сообщение
да, если быть точнее, то факториал.
Да я как бы понял, только вот не пойму с какого края подходить.

Добавлено через 4 минуты
так есть одна идея, нужно
1) убрать все числа являющиеся степенью 10.
2) заменить все числа кратные 10 на их аналоги без 0.
Кажется так. Как думаешь?
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:41  [ТС] #9
то что ранее сказал, было немного неправильно, насчет 2-х последних шагов.
я пользуюсь библиотекой gmp.h.

моя идея такая:
1)начать вычеслять факториал.
2)как в конце начнут появляться нули, то удалять их, для проверки сделать счетчик, сколько он удалил нулей.
3)если число получается больше миллиарда, то округлять его до миллиарда.
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:47 #10
Цитата Сообщение от opensuse2008 Посмотреть сообщение
1)начать вычИслять факториал.
бесполезно, слишком большая величина, будешь до скончания веков высчитывать.

Цитата Сообщение от opensuse2008 Посмотреть сообщение
3)если число получается больше миллиарда, то округлять его до миллиарда.
какое число?
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:53  [ТС] #11
Цитата Сообщение от Rajd Посмотреть сообщение
какое число?
факториал сам.

может тогда воспользоваться альтернативными формулами:
http://ru.wikipedia.org/wiki/%D0%A4%...B8%D0%B0%D0%BB

Добавлено через 2 минуты
тут написал код для вычесления чисел Простые числа Мерсенна
http://dic.academic.ru/dic.nsf/ruwik...BD.D0.BD.D0.B0

выложить?
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:54 #12
Цитата Сообщение от opensuse2008 Посмотреть сообщение
факториал сам.

может тогда воспользоваться альтернативными формулами:
http://ru.wikipedia.org/wiki/%D0%A4%...B8%D0%B0%D0%BB
Даже незнаю, погляди тамже в вики дана ссылка на калькулятор факториалов правда он считает лишь до 5000 попробуй введи посмотри.
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:55  [ТС] #13
ну да, уже пробывал, число получилось веселым.
0
Rajd
44 / 22 / 1
Регистрация: 20.11.2008
Сообщений: 178
26.09.2010, 06:57 #14
первое что нужно сделать на мой взгляд взяв массив из 987654321 загнать в него все наши множители и упростить каждый из них удалив пары (2,5)
0
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:58  [ТС] #15
мм, а это идея.
0
26.09.2010, 06:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2010, 06:58
Привет! Вот еще темы с ответами:

Получить сумму m последних цифр числа n - C++
Даны натуральные числа m и n. Получить сумму m последних цифр числа n. Помогите написать программу.

Циклический сдвиг последних 3 цифр числа - C++
Дано целое число N. Совершить операцию циклического сдвига с последними тремя цифрами. Помогите пожалуйста!

Получить сумму m последних цифр числа n. - C++
Даны натуральное n,m. Получить сумму m последних цифр числа n. Решите на С.Заранее спасибо.

Как найти произведение 3-х последних цифр k-го числа Фибоначчи? - C++
Как быстро найти произведение 3-х последних цифр k-го числа Фибоначчи?


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

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

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