Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given a number N, the task is to count the total number of repeating digits in the given number.
Examples:
Input: N = 99677
Output: 2
Explanation:
In the given number only 9 and 7 are repeating, hence the answer is 2.Input: N = 12
Output: 0
Explanation:
In the given number no digits are repeating, hence the answer is 0.
Naive Approach: The idea is to use two nested loops. In the first loop, traverse from the first digit of the number to the last, one by one. Then for each digit in the first loop, run a second loop and search if this digit is present anywhere else as well in the number. If yes, then increase the required count by 1. In the end, print the calculated count.
Algorithm
Define a function called count_repeating_digits(num) Convert the input number to a string using the to_string() function Store it in a variable called str_num Initialize a variable called count to 0 Use a nested loop to compare each digit in the string with every other digit a. For each digit i in str_num, start another loop to compare it with all the digits j following it b. If a repeating digit is found, increment the count by 1 and exit the inner loop c. Continue comparing the rest of the digits Return the count of repeating digits Call the count_repeating_digits(num) function and store the result in a variable called repeating_digits Display the number of repeating digits on the console
C++
#include <iostream>
#include <string>
using
namespace
std;
int
count_repeating_digits(
int
num) {
int
count = 0;
string str_num = to_string(num);
for
(
int
i = 0; i < str_num.length(); i++) {
for
(
int
j = i+1; j < str_num.length(); j++) {
if
(str_num[i] == str_num[j]) {
count++;
break
;
}
}
}
return
count;
}
int
main() {
int
num=99677;
int
repeating_digits = count_repeating_digits(num);
cout <<
"Number of repeating digits: "
<< repeating_digits << endl;
return
0;
}
Python3
def
count_repeating_digits(num):
count
=
0
str_num
=
str
(num)
for
i
in
range
(
len
(str_num)):
for
j
in
range
(i
+
1
,
len
(str_num)):
if
str_num[i]
=
=
str_num[j]:
count
+
=
1
break
return
count
num
=
99677
repeating_digits
=
count_repeating_digits(num)
print
(
"Number of repeating digits:"
, repeating_digits)
Output
Number of repeating digits: 2
Time Complexity: O(N2)
Auxiliary Space: O(1)
Efficient Approach: The idea is to use Hashing to store the frequency of the digits and then count the digits with a frequency equal to more than 1. Follow the steps below to solve the problem:
- Create an array of size 10 to store the count of digits 0 – 9. Initially store each index as 0.
- Now for each digit of number N, increment the count of that index in the array.
- Traverse the array and count the indices that have value more than 1.
- In the end, print this count.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
countRepeatingDigits(
int
N)
{
int
res = 0;
int
cnt[10] = { 0 };
while
(N > 0) {
int
rem = N % 10;
cnt[rem]++;
N = N / 10;
}
for
(
int
i = 0; i < 10; i++) {
if
(cnt[i] > 1) {
res++;
}
}
return
res;
}
int
main()
{
int
N = 12;
cout << countRepeatingDigits(N);
return
0;
}
Java
class
GFG{
static
int
countRepeatingDigits(
int
N)
{
int
res =
0
;
int
cnt[] =
new
int
[
10
];
while
(N >
0
)
{
int
rem = N %
10
;
cnt[rem]++;
N = N /
10
;
}
for
(
int
i =
0
; i <
10
; i++)
{
if
(cnt[i] >
1
)
{
res++;
}
}
return
res;
}
public
static
void
main(String[] args)
{
int
N =
12
;
System.out.println(countRepeatingDigits(N));
}
}
Python3
def
countRepeatingDigits(N):
res
=
0
cnt
=
[
0
]
*
10
while
(N >
0
):
rem
=
N
%
10
cnt[rem]
+
=
1
N
=
N
/
/
10
for
i
in
range
(
10
):
if
(cnt[i] >
1
):
res
+
=
1
return
res
N
=
12
print
(countRepeatingDigits(N))
C#
using
System;
class
GFG{
static
int
countRepeatingDigits(
int
N)
{
int
res = 0;
int
[]cnt =
new
int
[10];
while
(N > 0)
{
int
rem = N % 10;
cnt[rem]++;
N = N / 10;
}
for
(
int
i = 0; i < 10; i++)
{
if
(cnt[i] > 1)
{
res++;
}
}
return
res;
}
public
static
void
Main(String[] args)
{
int
N = 12;
Console.WriteLine(countRepeatingDigits(N));
}
}
Javascript
<script>
function
countRepeatingDigits(N)
{
var
res = 0;
var
cnt = Array(10).fill(0);
while
(N > 0) {
var
rem = N % 10;
cnt[rem]++;
N = N / 10;
}
for
(
var
i = 0; i < 10; i++) {
if
(cnt[i] > 1) {
res++;
}
}
return
res;
}
var
N = 12;
document.write( countRepeatingDigits(N));
</script>
Time Complexity: O(N)
Auxiliary Space: O(1)
Method #2:Using built in python functions:
- Convert integer to string.
- Use the Counter function to count the frequency of characters.
- If the frequency is greater than 1 increment the count
Below is the implementation:
C++
#include <iostream>
#include <unordered_map>
#include <string>
using
namespace
std;
int
countRepeatingDigits(
int
N)
{
string number = to_string(N);
int
count = 0;
unordered_map<
char
,
int
> frequency;
for
(
char
c : number) {
frequency++;
}
for
(
auto
& it : frequency) {
if
(it.second > 1) {
count++;
}
}
return
count;
}
int
main()
{
int
N = 1232145;
cout << countRepeatingDigits(N) << endl;
return
0;
}
Java
import
java.util.HashMap;
public
class
Main {
static
int
countRepeatingDigits(
int
N)
{
String number = Integer.toString(N);
int
count =
0
;
HashMap<Character, Integer> frequency
=
new
HashMap<>();
for
(
char
c : number.toCharArray()) {
frequency.put(c,
frequency.getOrDefault(c,
0
) +
1
);
}
for
(
char
key : frequency.keySet()) {
if
(frequency.get(key) >
1
) {
count++;
}
}
return
count;
}
public
static
void
main(String[] args)
{
int
N =
1232145
;
System.out.println(countRepeatingDigits(N));
}
}
Python3
from
collections
import
Counter
def
countRepeatingDigits(N):
number
=
str
(N)
count
=
0
frequency
=
Counter(number)
for
i
in
frequency:
if
(frequency[i] >
1
):
count
=
count
+
1
return
count
N
=
1232145
print
(countRepeatingDigits(N))
Javascript
function
countRepeatingDigits(N)
{
let number = N.toString();
let count = 0;
let frequency = {};
for
(let c of number) {
frequency = (frequency || 0) + 1;
}
for
(let key
in
frequency) {
if
(frequency[key] > 1) {
count++;
}
}
return
count;
}
let N = 1232145;
console.log(countRepeatingDigits(N));
C#
using
System;
using
System.Collections.Generic;
public
class
Program
{
public
static
int
countRepeatingDigits(
int
N)
{
string
number = N.ToString();
int
count = 0;
Dictionary<
char
,
int
> frequency =
new
Dictionary<
char
,
int
>();
foreach
(
char
c
in
number)
{
if
(!frequency.ContainsKey(c))
{
frequency = 0;
}
frequency++;
}
foreach
(KeyValuePair<
char
,
int
> item
in
frequency)
{
if
(item.Value > 1)
{
count++;
}
}
return
count;
}
public
static
void
Main()
{
int
N = 1232145;
Console.WriteLine(countRepeatingDigits(N));
}
}
Time Complexity: O(N)
Auxiliary Space: O(N)
Last Updated :
24 Apr, 2023
Like Article
Save Article
На вход получаем два числа, 1000 и 2600. Необходимо вывести все числа с тремя одинаковыми числами (не используя списки). Начал как — то так, но закончить не могу…. Как посчитать одинаковые цифры и вывести числа?
num_1 = int(input(‘Введите первое число: ‘))
num_2 = int(input(‘Введите второе число: ‘))
count = 0
for i in range(number1, number2 + 1, 1):
i = str(i)
for num in ……..:
if num == …………:
……………………..
-
Вопрос задан10 мар.
-
440 просмотров
(Ответ сгенерирован искусственным интеллектом!)
Вы можете решить эту задачу, преобразовав каждое число в строку, а затем использовать метод count() для подсчета количества вхождений каждой цифры. Затем можно проверить, есть ли у числа три одинаковых цифры, используя условие if. Например:
num_1 = 1000
num_2 = 2600
for i in range(num_1, num_2 + 1):
s = str(i)
for c in s:
if s.count(c) == 3:
print(i)
break
Здесь мы проходимся по каждому числу i в диапазоне от num_1 до num_2, преобразуя его в строку s. Затем мы проходимся по каждой цифре c в строке s, и если c встречается в строке s три раза, мы выводим число i и переходим к следующему числу. Обратите внимание, что мы используем оператор break, чтобы выйти из цикла, когда мы находим число с тремя одинаковыми цифрами, потому что дальнейший поиск в этом числе бессмысленен.
Пригласить эксперта
Составь коллекцию, в которой будет храниться набор пар: цифра и сколько раз она встретилась. Лучше всего подойдёт словарь.
Дальше просто перебери элементы словаря, если есть элемент, у которого значение равно 3, значит, число подходит.
Совет: посмотри в сторону collections.Counter.
Можно попробовать решить обратную зачачу. Генерировать все с 3 одинаковыми.
Например.
111x = генератор для последовательности 1111,1112,1113....1119
11x1 = для 1111, 1121,1131....
А потом — отфильтровать те которые не заходят в заявленный диапазон.
-
Показать ещё
Загружается…
25 мая 2023, в 05:30
1000 руб./за проект
25 мая 2023, в 05:14
5000 руб./за проект
25 мая 2023, в 02:38
1000 руб./за проект
Минуточку внимания
7 / 7 / 0 Регистрация: 27.09.2011 Сообщений: 144 |
|
1 |
|
Найти количество повторяющихся цифр в числе13.05.2012, 17:46. Показов 7232. Ответов 10
Вводится натуральное число. Нужно вывести кол-во повторяющихся чисел в нем.
0 |
3646 / 1378 / 243 Регистрация: 16.04.2009 Сообщений: 4,526 |
|
13.05.2012, 19:05 |
2 |
Вводится натуральное число. Нужно вывести кол-во повторяющихся чисел в нем. Как это понять?
0 |
7 / 7 / 0 Регистрация: 27.09.2011 Сообщений: 144 |
|
13.05.2012, 22:07 [ТС] |
3 |
Нужно вывести кол-во повторяющихся цифр в нем. ЦИФР имелось в виду. Прошу прощения.
0 |
Toshkarik 1180 / 893 / 94 Регистрация: 03.08.2011 Сообщений: 2,461 |
||||||||
13.05.2012, 22:28 |
4 |
|||||||
1 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
13.05.2012, 23:34 |
5 |
Нее… как понять это:
С циклом постусловия , и послеусловия !???
0 |
3646 / 1378 / 243 Регистрация: 16.04.2009 Сообщений: 4,526 |
|
13.05.2012, 23:40 |
6 |
lazybiz, предполагаю автор имел ввиду do while и while.
0 |
4982 / 3089 / 456 Регистрация: 10.11.2010 Сообщений: 11,165 Записей в блоге: 10 |
|
13.05.2012, 23:49 |
7 |
go, полагаю я с тобой согласен.
0 |
7 / 7 / 0 Регистрация: 27.09.2011 Сообщений: 144 |
|
14.05.2012, 07:43 [ТС] |
8 |
Абсолютно верно. Добавлено через 10 минут
0 |
1180 / 893 / 94 Регистрация: 03.08.2011 Сообщений: 2,461 |
|
14.05.2012, 07:44 |
9 |
digits[] это массив, вы не проходили массивы?
0 |
7 / 7 / 0 Регистрация: 27.09.2011 Сообщений: 144 |
|
14.05.2012, 07:53 [ТС] |
10 |
нет, к сожалению. Добавлено через 14 секунд
0 |
Toshkarik 1180 / 893 / 94 Регистрация: 03.08.2011 Сообщений: 2,461 |
||||||||
14.05.2012, 18:11 |
11 |
|||||||
0 |
Написал программу, по нахождению одинаковых цифр в числе. Не могу найти ошибку
upd нужно просто проверить есть ли повторяющиеся цифры или нет.
x = int(input('Введите число:'))
def array(x):
global a
a = []
while x > 0:
b = x % 10
a.append(b)
x //= 10
return list(reversed(a))
print(array(x))
for i in range(len(a)):
if a[i] == a[i+1]:
print('да')
break
else:
print("нет")
задан 18 мар 2021 в 6:48
1
У вас цикл while
завершается на первой итерации. Уберите отступ перед return
.
Вторая ошибка заключается в том, что у вас цикл for выполняется len(a)
раз. Поэтому на последней итерации a[i+1]
приведет к исключению IndexError. Используйте цикл до len(a) - 1
.
Ну и сам алгоритм сравнения чисел неверный. Для числа 121
вы не найдете совпадений, т.к. 1 != 2
и 2 != 1
. Можно сравнить длину множества от a
с длиной a
. Множество содержит только уникальные элементы последовательности, поэтому, если длины разные, то можно сделать вывод, что какое-то число повторяется.
Избавьтесь от глобальных переменных.
def array(x):
nums = []
while x > 0:
b = x % 10
nums.append(b)
x //= 10
return list(reversed(nums))
x = int(input('Введите число: '))
a = array(x)
print('Да' if len(set(a)) != len(a) else 'Нет')
ответ дан 18 мар 2021 в 6:59
ioprstioprst
1,2187 серебряных знаков17 бронзовых знаков
Можно решить вопрос просто стандартными структурами. Построить список со всеми символами числа, потом множество этих символов (удалит дубли), если длина этих двух переменных не равна то, очевидно, есть дубли. Предварительно можно проверить, что если кол-во символов в списке больше 10 (столько всего есть цифр) то, очевдно, цифры повторяются.
def double_exist(number: int) -> bool:
list_number = [s for s in str(number)]
if len(list_number) > 10:
return True
set_number = set(list_number)
if len(list_number) != len(set_number):
return True
return False
number = int(input('Введите число: '))
if double_exist(number):
print('Да')
else:
print('Нет')
ответ дан 18 мар 2021 в 11:00
asanisimovasanisimov
1,4564 серебряных знака12 бронзовых знаков
3
Посчитать общее количество определенных цифр в числах
Просмотров 13.7к. Обновлено 15 октября 2021
Посчитать, сколько раз встречается определенная цифра в введенной последовательности чисел. Количество вводимых чисел и цифра, которую необходимо посчитать, задаются вводом с клавиатуры.
- Запросить у пользователя количество вводимых чисел (n) и цифру для подсчета (d).
- Присвоить счетчику цифр значение 0.
- Выполнить n раз цикл, в теле которого
- запрашивать очередное число,
- пока это число не сократиться до нуля
- извлекать последнюю его цифру и сравнивать с цифрой, которую надо посчитать,
- увеличивать значение счетчика цифр на 1, если сравниваемые цифры совпадают,
- избавляться от последней цифры числа.
- В конце программы вывести количество посчитанных цифр на экран.
Pascal
количество цифр в числе паскаль
var
m: word;
n,d,i, count: byte;
begin
write('Количество чисел: ');
readln(n);
write('Цифра: ');
readln(d);
count := 0;
for i:=1 to n do begin
readln(m);
while m > 0 do begin
if m mod 10 = d then
count := count + 1;
m := m div 10;
end;
end;
writeln('Количество цифр: ', count);
end.
Количество чисел: 6
Цифра: 5
301
8952
155
306
200
541
Количество цифр: 4
Язык Си
#includemain () {
int n,d,m,count,i;
printf("Количество чисел: ");
scanf("%d", &n);
printf("Цифра: ");
scanf("%d", &d);
count = 0;
for(i=0;i< n;i++) {
scanf("%d", &m);
while (m>0) {
if (m%10 == d) count += 1;
m = m / 10;
}
}
printf("Количество цифр: %dn", count);
}
Количество чисел: 4
Цифра: 1
10500
1400
500
201
Количество цифр: 3
Python
количество цифр в числе python (питон)
n = int(input("Сколько будет чисел? "))
d = int(input("Какую цифру считать? "))
count = 0
for i in range(1,n+1):
m = int(input("Число " + str(i) + ": "))
while m > 0:
if m%10 == d:
count += 1
m = m // 10print("Было введено %d цифр %d" % (count, d))
Сколько будет чисел? 5
Какую цифру считать? 0
Число 1: 508
Число 2: 1024
Число 3: 300
Число 4: 10101
Число 5: 15
Было введено 6 цифр 0
КуМир
алг количество цифры
нач
цел m,n,d,i,count;
вывод "Количество чисел: "
ввод n
вывод "Цифра: "
ввод d
count := 0
нц для i от 1 до n
ввод m
нц пока m > 0
если mod(m,10) = d то
count := count + 1
все
m := div(m,10)
кц
кц
вывод "Количество цифр: ", count
кон
Количество чисел: 5
Цифра: 0
1099
8586
2300
15
10
Количество цифр: 4
Basic-256
input "Количество чисел: ", n
input "Цифра: ", d
c = 0
for i=1 to n
input m
while m > 0
if m%10 = d then c = c+1
m = m 10
endwhile
next i
print "Количество цифр: " + c
Количество чисел: 10
Цифра: 4
1234
11
1287
8945
200783
12
84
9600
544
244
Количество цифр: 7