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

Нахождение факториала: для заданного N найти последнюю отличную от нуля цифру - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция, в функции main() или общие переменные для нескольких функций http://www.cyberforum.ru/cpp-beginners/thread684614.html
Делаю мелкую игрушку, в консоли, ради забавы и столкнулся с 1 проблемой: Невозможно, создавать функцию в функции, вынеся эту функцию за пределы main() И скомпилировав, написало, что эта функция ссылается на переменные, которые ВНЕ зоны ЕЁ видимости. Попытавшись, вытащить за пределы main() все переменные, мне написало, что эти переменные, ВООБЩЕ НИКОМУ не принадлдежат! Так вот в чем вопрос:...
C++ Сортировка строк матрицы Задача: отсортировать (переставить) строки матрицы в порядке убывания значений наименьших элементов строк. Вот мой код. Помогите написать функцию Swap которая сортирует строки. #include <iostream> #include <stdlib.h> #include <ctime> using namespace std; const int size = 5; http://www.cyberforum.ru/cpp-beginners/thread684612.html
C++ Вывести некий элемент массива
Почему пишет что переменная V неопределена? И вобше как тогда вывести первый отрицательний елем. массива, и первый положетильний, идущий после первого отрицательного?#include<iostream> #include<conio.h> #include<stdlib.h> #include<locale.h> using namespace std; int main() { setlocale(LC_ALL,"ukrainian"); int n; int* arr;
C++ Программа вычисления местонахождения точки относительно фигуры (лежит ли точка внутри, на контуре или вне фигуры)
Нужно написать программу вычисления местонахождения точки относительно фигуры(лежит ли данная точка внутри неё, на контуре или вне фигуры). В данном случае, это прямоугольник. Главная функция должна вызывать 4 дополнительных:введение параметра контура, введение координат,определение местонахождения и выведение определенного сообщения. Координаты вершин прямоугольника (–a,0), (a,0), (a,a), (–a,a)....
C++ Дано натурально число: верно ли, что данное число начинается на А,а заканчивается на В(вво с клавы А и В) http://www.cyberforum.ru/cpp-beginners/thread684575.html
Дано натурально число: верно ли, что данное число начинается на А,а заканчивается на В(вво с клавы А и В) помогите пожалуйста написать програмку на С++ Добавлено через 19 часов 18 минут вводишь исходное число, потом вводишь А и В, и проверяешь условие, число не должно быть однозначным. если оно однозначное - выводишь сообщение об ошибке, если нет, то делаешь условие: берешь первую цифру...
C++ Не производиться ввод при помощи функции gets(s) По непонятной мне причине не производиться ввод при помощи функции gets(s) или getline(cin, s). Если использовать просто cin, то проблем нет: //Рекурсия. Вычисление факториала. Функция, возвращающая // наибольший общий делитель. Функция возращающая строку в обратном // порядке. #include <iostream> #include <cstdlib> #include <cstdio> using namespace std; подробнее

Показать сообщение отдельно
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89

Нахождение факториала: для заданного N найти последнюю отличную от нуля цифру - C++

30.10.2012, 22:28. Просмотров 1647. Ответов 6
Метки (Все метки)

Факториалом натурального числа N (обозначается как N!) называется произведение всех натуральных чисел от 1 до N. Например, 5! = 1*2*3*4*5 = 120. Требуется написать программу, позволяющую для заданного N находить последнюю отличную от нуля цифру в числе N!
Исходные данные
В первой строке записано натуральное K<=1000. В каждой из следующих K строк записано очередное число Ni, для которого нужно получить ответ (1<=Ni<=1000000).
Результат
Выведите K цифр, каждую в отдельной строке

необходимо чтобы алгоритм в 1 секунду укладывался. помогите кто может. как я понял тут сам факториал искать не нужно наверняка есть какая та связь между факториалом и его последней отличной от нуля цифрой

Добавлено через 1 час 50 минут

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
#include <iostream>
 
int ch(int &a){
        int k,s,t,i,j;
        k = a / 5;
        s = 0;
        while ( k > 0){
                s += k;
                k /= 5;
        }
        t = 1;
        for (int i = 2; i <= a; i++){
                j = i;
                while ( j % 5 == 0){
                        j /= 5;
                }
                while ( s > 0 && j % 2 == 0){
                        j /= 2;
                        s -= 1;
                }
                t = t * ( j % 10 ) % 10;
        }
        return t;
}
 
 
int main(){
        int n,a;
        std::cin >> n;
        for (int i = 0; i < n; i++){
                std::cin >> a;
                std:: cout <<ch(a)<<std::endl;
        }
        std::system("pause");
        return 0;
}
вот то что я придумал но как это уже понятно мой алгоритм не проходит по времени
есть у кого какие мысли?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru