Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/50: Рейтинг темы: голосов - 50, средняя оценка - 4.96
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23

Найти, на сколько нулей оканчивается число N

06.03.2010, 19:10. Показов 11303. Ответов 42
Метки нет (Все метки)

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



Нашел решение этой задачи на языке паскаль
но с переводом на С++ проблемы

Надеюсь на вашу помощь )

Добавлено через 30 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var a,b,c,n:longint;
begin
write('>N=');
readln(N);
a:=0;
for c:=1 to n do
begin
  b:=c;
  while b mod 5 = 0 do
    begin
      b:=b div 5;
      inc(a);
    end;
end;
write('>Result: ',a,'.');
readln;
end.


вот текст в паскале
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2010, 19:10
Ответы с готовыми решениями:

На сколько нулей оканчивается факториал числа N?
3.Вводится натуральное число N. На сколько нулей оканчивается число N! (N факториал)?

Найти, на сколько нулей оканчивается произведение N заданных чисел
привет всем не могу найти ошибку в коде!!!! ЗАДАЧА Дано число N, а затем N целых числа. Найдите на сколько нулей оканчивается...

Найти, на сколько нулей оканчивается число
3)вводится число N. Нужно найти, на сколько нулей оканчивается число (1<=N<=1 000 000 000) (заранее спасибо)

42
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 15:59  [ТС]
Студворк — интернет-сервис помощи студентам
Работает сейчас правильно
но больше 33 ! не считает ... дело в unsigned long?
0
 Аватар для Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 16:06
Скорей всего просто идёт переполнение, unsigned long не вмещает просто такое большое число...
попробуй вместо unsigned long использовать unsigned double...
0
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 17:46  [ТС]
заменяю везде long на double пишет Illegal use of floating point
и неоднократно too many types in declaration

Добавлено через 51 секунду
может быть long double?

Добавлено через 2 минуты
Поставил лонг дабл
if (tmp%10 == 0){

в этой строчке illegal use of floating point
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 18:38
Musik, для вещественного типа не определена операция остаток от деления.
1
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:08  [ТС]
Для вещественных чисел определены все стандартные арифметические операции сложения (+), вычитания (-), умножения (*), деления (/) и изменения знака (-). В отличие от целых чисел, операция нахождения остатка от деления для вещественных чисел не определена.



0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:12
Musik, используйте свои типы данных(например на основе массива) или смиритесь с вместимостью unsigned long
0
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:13  [ТС]
необходимо находить остаток от деления факториалов больших чисел таких как 2000 ...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:17
Musik, в каком виде вы собираетесь хранить вот
такое
3316275092450633241175393380576324038281 1172081057803945719354370603807790560082 2400273230859732592255402352941225834109 2580848174152937961313866335263436889056 3405855616394060511725257187064785639354 4045405243957467037674108722970434684158 3437524315808775336451274879954368592474 0803240894656150723325065279765575717967 1536718689359056112815871601717232657156 1100042140124204338425737127001758835477 9689992128352899666585340557985490365736 6350133386550401172012152635488038268152 1522469209952060315644185654806759464970 5155228820523489999572645081406553667896 9532101467622671332026831552205194494461 6182392752040265297226315025747520482960 6475092739416585628353177957448287631459 6450373991327334177263608852490093506621 6101444597094127078213137325638315723020 1994991495831647094277447387032798554967 4298608839376326824152478834387469595829 2577405745398375015858154681362942179499 7239981359948101655656387603422731291225 0384709872909626622461971076605931550201 8951355831653578714922909167790497022470 9461193760778516511068443225590564873626 6530377384650390788049524600712549402614 5660722541363027549136715834060978310749 4528221749078134770969324155611133982805 1358600690594619965257310741177081519922 5645167785714580566021856547609523774630 1667942248844448579834980154803262082989 0965857381751888619376692828279888453584 6398965942139529844652910920091037100461 4944991582858805076186792494638518087987 4512891408019340074625920057098729578599 6436506558956124102310186905560603087836 2911050560124590899838341079936790205207 6858669183477906558544700148692656924631 9333376124280974200671728463619392496986 2846871999345039388936727048712717273456 1700354867477509102955523953547941107421 9133013568195410919414627664175421615876 2526285808980122244389024867718205495941 5751991701271767571787495861619665931878 8551418357820926014820717773317353960343 0496908207058995870138198081303559016076 2908388574561288217698136182483576739218 3031184147191339868928423440007792466912 0976673165143349443747323563657204884447 8331854941693030124531676232745367879322 8474738244850922831399525097325059791270 3104768360148119110222925337269769382367 0057565612400290576043852852902937606479 5334581796661238396052625491071866638693 5476610845504619810208405063582767652658 9492393249519685954171672419329530683673 4955440045863598381610430594498266275306 0542358075589410827888042782595108988063 5410567917950974017780688782869810219010 9001483520616888837202503106659220686014 8364983053278208826353655804360568678128 4169217133047141176312175895777122637584 7531235172309905498292101346873042058980 1441806387538266416989770423775940628087 7253702265426530580862379301422675821187 1435029186376363403001732518182620760397 4736959520264263236414544685111342720215 0458383851010136941313034856221916631623 8926327658153550112763078250599691588245 3345743543786368317373067329658935519969 4458236873508830278657700879749889992343 5555662406828347637846851838449736488739 5247510322422211056120129582965719136810 8693825475764118886879346725191246192151 1447388362695916436724900716534282281526 6124780046392254494517036372362794075778 4542091048305461656190622174286981602973 3240465202019928138548826819510072828697 0107073750092766648750217477537274235150 8748246720274170031581122805896178122160 7474379475109506209385566745812525183766 8215771280786149925587613235295042234638 7878954850885764466136290394127665978044 2020922813379871159008962648789424132104 5492500356667063290944157937298674342147 0507213588932019580723064781498429522595 5890127548239717733257229103257609297907 3329954505638836264047465024508080946911 6072632087494143973000704111418595530278 8273576548191820024496977611113463181952 8276159096418979095811733862720608891043 2945244978535147014112442143055486089639 5783783473253235957632914389252883939862 5627324286277556314046383038916842163311 3445636309571965978466338551492316196335 6753551384034258041629198378222669095217 7015317533873028461084188655413832917195 1332117895728541662084823682817932512931 2375215419269702697032994776438233864830 0887153037340566638386829408848773072176 2268849023084934661194260180272613802108 0050782157410060548482013478595781027707 0778065551277254050167433239606625321641 5004808772403047611929032210154385353138 6855384864255707907953411765195711886837 3988068389579274374968349814292329219630 9777090143936843655333359307820181312993 4550242060445633405786069624719615056033 9489952332180043435996725662392719643540 2872055475012079854331970674797313126813 5236537440856622632067688375851327828962 5233328434181297762469707954343600349234 3159239674763638912115285406657783646213 9112474470512552263427012395270181270454 9164804593224810885867460095230679317596 7755581011679940005249806303763141344412 2690370349873557999160092592480750524855 4156826628176081544630830540667741263012 4441864204108373119093130001154470560277 7737243780671888997708510567272767812471 9883285769584421758889516046786820481001 0047816462358220838532488134270834079868 4866321627202088233087278190853788454691 3155602172887312190739396520926022910147 7527080930865364979858554010577450279289 8146036884318215086372462169678722821693 4737059928627711244769092090298832016683 0170273420259765671709863311216349502171 2644268271196502640542282317596308744753 0184719409552426341149846950807339008000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000
число?
0
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:22  [ТС]
чтож придется изобрести =)))
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
07.03.2010, 19:24
Musik, могу предложить вариант на C# и Java. Через пару часов могу и на C++
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.03.2010, 00:53
Musik,
Цитата Сообщение от Musik Посмотреть сообщение
количество нулей надо найти на конце Факториала от N )))
Цитата Сообщение от Musik Посмотреть сообщение
Работает сейчас правильно
но больше 33 ! не считает
там -> N!= 1*2*3*...*N считает больше
C++
1
size_t fact = 1001;
, правда, без std::cin
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2010, 01:28
mirso, так не интересно если не вычислять факториал
Мой вариант
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include "Factorial.h"
int main()
{
    setlocale(LC_ALL, "Russian");
    
    Factorial *factorial = new Factorial();
    int fact;
 
    std::cout<<"Введите факториал:\n> ";
    std::cin>>fact;
    
    factorial->WriteFactorial(fact);
    std::cout<<"Количество нулей:\n< "<<factorial->CountZero()<<std::endl;
    
    delete factorial;
    system("pause");
    return EXIT_SUCCESS;
}
factorial.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
class Factorial
{
public:
    void WriteFactorial(int);
    int CountZero();
protected:
private:
    void _Factorial(int);
    static const int n = 15000000;
    int mas[n];
};
Factorial.cpp
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <fstream>
#include "Factorial.h"
 
void Factorial::_Factorial(int factorial)
{
    int fact, i, zero = n - 1, index = n - 1;
    for(i = 0; i < n - 1; ++i)
        mas[i] = 0;
    mas[n - 1] = 1;
    for (fact = 2; fact <= factorial; ++fact)
    {
        while (mas[zero] == 0) --zero;
        for (i = zero; i >= index; --i)
            mas[i] *= fact;
        for (i = zero; i > index; --i)
            if (mas[i] >= 1000)
            {
                mas[i - 1] += mas[i] / 1000;
                mas[i] %= 1000;
            }
        if (mas[index] >= 1000)
        {
            mas[index - 1] += mas[index] / 1000;
            mas[index] %= 1000;
            index--;
            if (mas[index] >= 1000)
            {
                mas[index - 1] += mas[index] / 1000;
                mas[index] %= 1000;
                index--;
                if (mas[index] >= 1000)
                {
                    mas[index - 1] += mas[index] / 1000;
                    mas[index] %= 1000;
                }
            }
        } 
    }
}
 
void Factorial::WriteFactorial(int factorial)
{
    _Factorial(factorial);
    int i = 0;
    while (mas[i++] == 0);
    std::ofstream out("factorial.txt", std::ios::out);
    for (i -= 1; i < n; ++i)
    {
        if (mas[i] >= 100)
            out<<mas[i];
        else
            if (mas[i] < 10)
                out<<"00"<<mas[i];
            else
                out<<"0"<<mas[i];
    }
}
 
int Factorial::CountZero()
{
    int i = n - 1, count = 0;
    while(mas[i] == 0) --i;
    count = (n - i - 1) * 3;
 
    if(!(mas[i] % 100))
        return count + 2;
    else
        if(!(mas[i] % 10))
            return count + 1;
    return count;
}
2
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
08.03.2010, 01:53
M128K145,
Цитата Сообщение от M128K145 Посмотреть сообщение
static const int n = 15000000;
+1) Нипадецки!

Цитата Сообщение от M128K145 Посмотреть сообщение
на всякий случай
И так - с избытком!
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
08.03.2010, 01:58
mirso, видишь ли, проверено, что он считает до 100 000!
Дальше было лень проверять, но 100 000! = 282 * 10 ^ 456571 - это 150000 элементов массива. Мне в принципе не жалко, на всякий случай
1
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
08.03.2010, 16:11  [ТС]
Спасибо большое))
0
 Аватар для Metax
6 / 6 / 6
Регистрация: 27.02.2010
Сообщений: 17
11.03.2010, 00:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
 
int _tmain()
{
    int c,b;
    c=b=0;
    while ( (c=getchar()) != EOF && c != '\n' && c != '\0')
    {
        if (c == 48)
            b++;
    }
    printf ("Kolvo nuley v chisle %d ",b);
    _getch();
    return 0;
}
может такую вещь можно доработать для получения нужного результата
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.03.2010, 01:55
Metax, конечно можно, но суть задания не в том, чтобы посчитать количество нулей в конце файла, а вот чтобы посчитать его хотя бы в этом числе. А откуда вы его возьмете для того чтобы записать в файл?
0
 Аватар для Metax
6 / 6 / 6
Регистрация: 27.02.2010
Сообщений: 17
11.03.2010, 11:20
теперь понял, спсб )
1
...
 Аватар для Liebe
891 / 78 / 6
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
11.03.2010, 16:15
если не обязательно считать сам факториал, то можно и так
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int  main()
{
  long int n,s;
  cin>>n;
  s=n/5;
  cout<<"количество нулей     "<<s<<endl;
  
 return 0;
}
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
11.03.2010, 22:10
liebe, спорное утверждение 2000! - 499 нулей в конце. По вашей формуле 2000/5 = 400
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.03.2010, 22:10

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

Вводится n, необходимо найти,на сколько нулей оканчивается n! (факториал)
Здравствуйте,подскажите а лучше покажите как можно найти количество нулей в числе,не в том что вводит пользователь,а то которое...

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

Найти первые 4 четыре натуральных числа, пятая степень которых оканчивается тремя одинаковыми цифрами, кроме нулей
Найти первые 4 четыре натуральных числа, пятая степень которых оканчивается тремя одинаковыми цифрами, кроме нулей

На сколько нулей может оканчиваться число?
произведение делителей числа оканчивается 398 нулями, на сколько нулей может оканчиваться само число? помогите пожалуста


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru