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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
25.09.2010, 19:38     6 последних ненулевых цифр числа 987654321 #1
понимаю, что олимпиадная задача, но все же, натолкните на идею.

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2010, 19:38     6 последних ненулевых цифр числа 987654321
Посмотрите здесь:

C++ составить линейную программу (сумма двух первых цифр заданного четырёхзначного числа равна сумме двух его последних цифр)
Получить сумму m последних цифр числа n. C++
Даны натуральные числа N и M(N > M).Найти сумму М последних цифр числа N. C++
C++ Дано натуральные числа n и m. Определить суму m последних цифр числа n.
C++ Даны натуральные числа n, m. Получить сумму m последних цифр числа n
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
25.09.2010, 19:49     6 последних ненулевых цифр числа 987654321 #2
Мб код предоставиет ?
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 05:46  [ТС]     6 последних ненулевых цифр числа 987654321 #3
код попзже выложу, как доделаю. а так все достаточно просто:
1) по мере необходимости избавляться от нулей в конце.
2)избавляться от всех цифр, кроме миллиардных, миллионных, тысячных, десятичных.

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

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

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

Цитата Сообщение от opensuse2008 Посмотреть сообщение
3)если число получается больше миллиарда, то округлять его до миллиарда.
какое число?
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:53  [ТС]     6 последних ненулевых цифр числа 987654321 #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

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

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

Написать программу: сумма первых трех цифр числа равна сумме его последних трех цифр. C++
Получить сумму m последних цифр числа n C++
C++ Циклический сдвиг последних 3 цифр числа

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

Или воспользуйтесь поиском по форуму:
opensuse2008
2 / 2 / 0
Регистрация: 23.09.2010
Сообщений: 15
26.09.2010, 06:58  [ТС]     6 последних ненулевых цифр числа 987654321 #15
мм, а это идея.
Yandex
Объявления
26.09.2010, 06:58     6 последних ненулевых цифр числа 987654321
Ответ Создать тему
Опции темы

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