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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.97
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
06.03.2010, 19:10     Найти, на сколько нулей оканчивается число N #1
Вводится 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.


вот текст в паскале
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2010, 19:10     Найти, на сколько нулей оканчивается число N
Посмотрите здесь:

C++ Оканчивается ли число на 1?
найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
C++ Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц
C++ Некоторое число оканчивается на 2
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц C++
C++ Определить, сколько слов оканчивается на заданную букву
В матрице из нулей и единиц найти квадрат заданного размера, состоящую целиком из нулей C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 15:59  [ТС]     Найти, на сколько нулей оканчивается число N #21
Работает сейчас правильно
но больше 33 ! не считает ... дело в unsigned long?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
07.03.2010, 16:06     Найти, на сколько нулей оканчивается число N #22
Скорей всего просто идёт переполнение, unsigned long не вмещает просто такое большое число...
попробуй вместо unsigned long использовать unsigned double...
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 17:46  [ТС]     Найти, на сколько нулей оканчивается число N #23
заменяю везде 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
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 18:38     Найти, на сколько нулей оканчивается число N #24
Musik, для вещественного типа не определена операция остаток от деления.
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:08  [ТС]     Найти, на сколько нулей оканчивается число N #25
Для вещественных чисел определены все стандартные арифметические операции сложения (+), вычитания (-), умножения (*), деления (/) и изменения знака (-). В отличие от целых чисел, операция нахождения остатка от деления для вещественных чисел не определена.



M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:12     Найти, на сколько нулей оканчивается число N #26
Musik, используйте свои типы данных(например на основе массива) или смиритесь с вместимостью unsigned long
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:13  [ТС]     Найти, на сколько нулей оканчивается число N #27
необходимо находить остаток от деления факториалов больших чисел таких как 2000 ...
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:17     Найти, на сколько нулей оканчивается число N #28
Musik, в каком виде вы собираетесь хранить вот
такое
331627509245063324117539338057632403828111720810578039457193543706038077905600822400273230859732592255402352941225834109258084817415293796131386633526343688905634058556163940605117252571870647856393544045405243957467037674108722970434684158343752431580877533645127487995436859247408032408946561507233250652797655757179671536718689359056112815871601717232657156110004214012420433842573712700175883547796899921283528996665853405579854903657366350133386550401172012152635488038268152152246920995206031564418565480675946497051552288205234899995726450814065536678969532101467622671332026831552205194494461618239275204026529722631502574752048296064750927394165856283531779574482876314596450373991327334177263608852490093506621610144459709412707821313732563831572302019949914958316470942774473870327985549674298608839376326824152478834387469595829257740574539837501585815468136294217949972399813599481016556563876034227312912250384709872909626622461971076605931550201895135583165357871492290916779049702247094611937607785165110684432255905648736266530377384650390788049524600712549402614566072254136302754913671583406097831074945282217490781347709693241556111339828051358600690594619965257310741177081519922564516778571458056602185654760952377463016679422488444485798349801548032620829890965857381751888619376692828279888453584639896594213952984465291092009103710046149449915828588050761867924946385180879874512891408019340074625920057098729578599643650655895612410231018690556060308783629110505601245908998383410799367902052076858669183477906558544700148692656924631933337612428097420067172846361939249698628468719993450393889367270487127172734561700354867477509102955523953547941107421913301356819541091941462766417542161587625262858089801222443890248677182054959415751991701271767571787495861619665931878855141835782092601482071777331735396034304969082070589958701381980813035590160762908388574561288217698136182483576739218303118414719133986892842344000779246691209766731651433494437473235636572048844478331854941693030124531676232745367879322847473824485092283139952509732505979127031047683601481191102229253372697693823670057565612400290576043852852902937606479533458179666123839605262549107186663869354766108455046198102084050635827676526589492393249519685954171672419329530683673495544004586359838161043059449826627530605423580755894108278880427825951089880635410567917950974017780688782869810219010900148352061688883720250310665922068601483649830532782088263536558043605686781284169217133047141176312175895777122637584753123517230990549829210134687304205898014418063875382664169897704237759406280877253702265426530580862379301422675821187143502918637636340300173251818262076039747369595202642632364145446851113427202150458383851010136941313034856221916631623892632765815355011276307825059969158824533457435437863683173730673296589355199694458236873508830278657700879749889992343555566240682834763784685183844973648873952475103224222110561201295829657191368108693825475764118886879346725191246192151144738836269591643672490071653428228152661247800463922544945170363723627940757784542091048305461656190622174286981602973324046520201992813854882681951007282869701070737500927666487502174775372742351508748246720274170031581122805896178122160747437947510950620938556674581252518376682157712807861499255876132352950422346387878954850885764466136290394127665978044202092281337987115900896264878942413210454925003566670632909441579372986743421470507213588932019580723064781498429522595589012754823971773325722910325760929790733299545056388362640474650245080809469116072632087494143973000704111418595530278827357654819182002449697761111346318195282761590964189790958117338627206088910432945244978535147014112442143055486089639578378347325323595763291438925288393986256273242862775563140463830389168421633113445636309571965978466338551492316196335675355138403425804162919837822266909521770153175338730284610841886554138329171951332117895728541662084823682817932512931237521541926970269703299477643823386483008871530373405666383868294088487730721762268849023084934661194260180272613802108005078215741006054848201347859578102770707780655512772540501674332396066253216415004808772403047611929032210154385353138685538486425570790795341176519571188683739880683895792743749683498142923292196309777090143936843655333359307820181312993455024206044563340578606962471961505603394899523321800434359967256623927196435402872055475012079854331970674797313126813523653744085662263206768837585132782896252333284341812977624697079543436003492343159239674763638912115285406657783646213911247447051255226342701239527018127045491648045932248108858674600952306793175967755581011679940005249806303763141344412269037034987355799916009259248075052485541568266281760815446308305406677412630124441864204108373119093130001154470560277773724378067188899770851056727276781247198832857695844217588895160467868204810010047816462358220838532488134270834079868486632162720208823308727819085378845469131556021728873121907393965209260229101477527080930865364979858554010577450279289814603688431821508637246216967872282169347370599286277112447690920902988320166830170273420259765671709863311216349502171264426827119650264054228231759630874475301847194095524263411498469508073390080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
число?
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
07.03.2010, 19:22  [ТС]     Найти, на сколько нулей оканчивается число N #29
чтож придется изобрести =)))
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:24     Найти, на сколько нулей оканчивается число N #30
Musik, могу предложить вариант на C# и Java. Через пару часов могу и на C++
mirso
524 / 342 / 17
Регистрация: 05.04.2009
Сообщений: 709
08.03.2010, 00:53     Найти, на сколько нулей оканчивается число N #31
Musik,
Цитата Сообщение от Musik Посмотреть сообщение
количество нулей надо найти на конце Факториала от N )))
Цитата Сообщение от Musik Посмотреть сообщение
Работает сейчас правильно
но больше 33 ! не считает
там -> N!= 1*2*3*...*N считает больше
C++
1
size_t fact = 1001;
, правда, без std::cin
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.03.2010, 01:28     Найти, на сколько нулей оканчивается число N #32
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;
}
mirso
524 / 342 / 17
Регистрация: 05.04.2009
Сообщений: 709
08.03.2010, 01:53     Найти, на сколько нулей оканчивается число N #33
M128K145,
Цитата Сообщение от M128K145 Посмотреть сообщение
static const int n = 15000000;
+1) Нипадецки!

Цитата Сообщение от M128K145 Посмотреть сообщение
на всякий случай
И так - с избытком!
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.03.2010, 01:58     Найти, на сколько нулей оканчивается число N #34
mirso, видишь ли, проверено, что он считает до 100 000!
Дальше было лень проверять, но 100 000! = 282 * 10 ^ 456571 - это 150000 элементов массива. Мне в принципе не жалко, на всякий случай
Musik
 Аватар для Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
08.03.2010, 16:11  [ТС]     Найти, на сколько нулей оканчивается число N #35
Спасибо большое))
Metax
 Аватар для Metax
6 / 6 / 3
Регистрация: 27.02.2010
Сообщений: 17
11.03.2010, 00:20     Найти, на сколько нулей оканчивается число N #36
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;
}
может такую вещь можно доработать для получения нужного результата
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
11.03.2010, 01:55     Найти, на сколько нулей оканчивается число N #37
Metax, конечно можно, но суть задания не в том, чтобы посчитать количество нулей в конце файла, а вот чтобы посчитать его хотя бы в этом числе. А откуда вы его возьмете для того чтобы записать в файл?
Metax
 Аватар для Metax
6 / 6 / 3
Регистрация: 27.02.2010
Сообщений: 17
11.03.2010, 11:20     Найти, на сколько нулей оканчивается число N #38
теперь понял, спсб )
Liebe
...
 Аватар для Liebe
891 / 74 / 5
Регистрация: 21.02.2010
Сообщений: 2,196
Записей в блоге: 1
11.03.2010, 16:15     Найти, на сколько нулей оканчивается число N #39
если не обязательно считать сам факториал, то можно и так
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2010, 22:10     Найти, на сколько нулей оканчивается число N
Еще ссылки по теме:

C++ В двухмерном массиве найти строки, не содержащие нулей и максимальное число, встречающееся более одного раза
C++ Вводим число n, а затем n-чисел. Сколько нулей среди n-чисел?
C++ На сколько нулей оканчивается факториал числа N?
C++ Упорядочить массив по убыванию, найти число положительных/отрицательных/нулей
Найти максимальное число в массиве и определить, сколько цифр числа делятся на число Z C++

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
 Аватар для M128K145
8276 / 3495 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
11.03.2010, 22:10     Найти, на сколько нулей оканчивается число N #40
liebe, спорное утверждение 2000! - 499 нулей в конце. По вашей формуле 2000/5 = 400
Yandex
Объявления
11.03.2010, 22:10     Найти, на сколько нулей оканчивается число N
Закрытая тема Создать тему
Опции темы

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