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

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

06.03.2010, 19:10. Просмотров 4280. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2010, 19:10
Ответы с готовыми решениями:

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

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

Вводим число n, а затем n-чисел. Сколько нулей среди n-чисел?
вводим число n, а затем n-чисел. сколько нулей среди n-чисел?

Упорядочить массив по убыванию, найти число положительных/отрицательных/нулей
Упорядочить массив Х(N) по убыванию, найти k1– количество положительных, k2–...

Определить, сколько слов оканчивается на заданную букву
Доброго времени суток. Задан текст. Определить, сколько слов оканчивается на...

42
Spoofi
8 / 8 / 1
Регистрация: 25.12.2009
Сообщений: 18
06.03.2010, 19:27 2
Вроде бы так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main() {
   int a=0,b,c,n;
   cout<<"Введите N: ";
   cin>>n;
   for (c=0;c<=n;c++) {
      b=c;
      while (b%5==0) {
         b/=5;
         a++;
      }   
   }
cout<<"Результат: "<<a<<endl;
}
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 19:33 3
Spoofi забыл ретурн в меине но я вообще о другом, я не пойму что означает "на сколько нулей оканчивается число" это имеется ввиду найти количество нулей в конце цифры? например 10 один ноль
1200 два нуля так?
1
Spoofi
8 / 8 / 1
Регистрация: 25.12.2009
Сообщений: 18
06.03.2010, 19:44 4
Цитата Сообщение от Amarted Посмотреть сообщение
Spoofi забыл ретурн в меине но я вообще о другом, я не пойму что означает "на сколько нулей оканчивается число" это имеется ввиду найти количество нулей в конце цифры? например 10 один ноль
1200 два нуля так?
Не понял, про какой ретурн Вы говорите?

По условию - да, Вы правильно поняли.
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 19:53 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main() {
   int a=0,b,c,n;
   cout<<"Введите N: ";
   cin>>n;
   for (c=0;c<=n;c++) {
      b=c;
      while (b%5==0) {
         b/=5;
         a++;
      }   
   }
cout<<"Результат: "<<a<<endl;
return 0; // вот про этот ретурн который пропущен у вас в коде.
}
1
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
06.03.2010, 19:53 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

небольшая поправочка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main() {
   int a=0,b,c;
   long n;
 
   cout<<"Enter N: ";
   cin>>n;
   for (c=0; c <= n; c++) {
      if (n%10 == 0){
         n/=10;
     a++;
      }
   }
   cout<<"Result: "<<a<<endl;
   return 0;
}
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 20:02 7
и на счет замого кода, раз я правильно понял, тогда нужно использовать другой код, щас объясню;

Добавлено через 3 минуты
Всё уже объяснять нечего, Vorona уже поправила, пока я писал=)

Добавлено через 4 минуты
Хотя для повышения производительности можно и даже нужно изменить условие цикла for
for (c=0; (c <= n/10); c++) это значительно уменьшит количество итераций! и переменная b совсем не нужна...

Цитата Сообщение от Spoofi Посмотреть сообщение
Ой, действительно пропустил

Я всего-лишь там код на C++ перевел, сильно не вдавался в то, как его улучшить.
Я так и понял=)
2
Spoofi
8 / 8 / 1
Регистрация: 25.12.2009
Сообщений: 18
06.03.2010, 20:08 8
Ой, действительно пропустил

Я всего-лишь там код на C++ перевел, сильно не вдавался в то, как его улучшить.
1
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
06.03.2010, 20:09  [ТС] 9
у меня не выводит ((
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
06.03.2010, 20:12 10
Цитата Сообщение от Amarted Посмотреть сообщение
Хотя для повышения производительности можно и даже нужно изменить условие цикла for
for (c=0; (c <= n/10); c++) это значительно уменьшит количество итераций!
мм, пробовал, нет смысла в этом..
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 20:12 11
Цитата Сообщение от Musik Посмотреть сообщение
у меня не выводит ((
В чём именно проблема? Код должен работать.
1
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
06.03.2010, 20:13 12
Цитата Сообщение от Musik Посмотреть сообщение
у меня не выводит ((
попробуй тот код, что я написал, он рабочий)
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 20:14 13
Цитата Сообщение от Vorona Посмотреть сообщение
мм, пробовал, нет смысла в этом..
а ты измени немного код в этой части вот так
C++
1
2
3
4
5
6
7
8
9
10
11
   cout<<"Enter N: ";
   cin>>n;
   int iter = 1;
   for (c=0; (c <= n); c++) {
       
       cout<<iter++<<'\n';
      if (n%10 == 0){
         n/=10;
         a++;
      }
   }
и введи 100200 а затем исправь условие на for (c=0; (c <= n/10); c++) и опять введи тоже самое 100200
и очень наверное удивишься...
2
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
06.03.2010, 20:17  [ТС] 14
Результат не выводит (
0
Spoofi
8 / 8 / 1
Регистрация: 25.12.2009
Сообщений: 18
06.03.2010, 20:17 15
Цитата Сообщение от Musik Посмотреть сообщение
у меня не выводит ((
Код который Vorona выложила(выложил):

spoofi@EEEPC:~/Рабочий стол$ ./main
Enter N: 6000
Result: 3
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 20:51 16
Цитата Сообщение от Musik Посмотреть сообщение
Результат не выводит (
подключи в код #include <conio.h>

и напиши перед return 0, getch();
1
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
06.03.2010, 21:13 17
точно, но скорее #include <conio> или #include <cconio> не знаю как в новых компиляторах этот заголовочный файл описывается при подключении
1
Amarted
158 / 20 / 3
Регистрация: 26.02.2010
Сообщений: 56
06.03.2010, 21:29 18
Цитата Сообщение от Vorona Посмотреть сообщение
точно, но скорее #include <conio> или #include <cconio> не знаю как в новых компиляторах этот заголовочный файл описывается при подключении
Да в новых тоже самое на сколько я знаю, хотя даже можно избежать включения лишнего файла, есть такая функция getchar(); она и без #include <conio> работает;
Ну если всётакие компилятор выдаст ошибку при вызове getchar();( хотя по идее не должно ) тогда уже надо использовадь директиву #include <conio> и функцию getch();
1
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
06.03.2010, 21:57  [ТС] 19
Добавлено через 3 минуты
ахах блин так и думал что словами писать надо >_<
количество нулей надо найти на конце Факториала от N ))) в том случае знак ! не являлся интонацией
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
06.03.2010, 22:35 20
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <iostream>
#include <conio>
using namespace std;
unsigned long fact(unsigned long);
 
int main() {
    clrscr();
    int a = 0, c;
    unsigned long n, tmp;
 
    cout<<"Enter N: ";
    cin>>n;
 
    tmp = fact(n);
        cout<<"Factorial of "<<n<<'='<<fact(n)<<endl;
    for (c = 0; (c <= tmp/10); c++) {
        if (tmp%10 == 0){
            tmp/=10;
            a++;
        }
    }
    cout<<"Result: "<<a<<endl;
    getch();
    return 0;
}
 
unsigned long fact(unsigned long n)
{
    if(n <= 1)
        return 1;
    return n * fact(n - 1);
}
1
06.03.2010, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2010, 22:35

Найти номер строки матрицы, в которой самое большое число нулей
/**Построить функцию, определяющую для двумерного массива номер строки, в...

Найти максимальное число в массиве и определить, сколько цифр числа делятся на число Z
Массив intA=

Оканчивается ли число на 1?
Помогите пожалуйста с алгоритмом, мне нужно определить, когда число...


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

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

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