Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Намиране на броя числа с дублиращи се цифри..имам нужда от помощ

Featured Replies

Трябва ми някакво решение на следната задача, на C++ или Java ...Ще съм много благодарен на всеки опитал се да помогне! 

Напишете програма  която прочита от стандартния вход броя N на естествени числа, които ще анализира. След това програмата трябва да прочете тези N числа и да отпечата на един ред на стандартния изход броя на тези от тях, които могат, чрез разместване на цифрите в записа им да се преобразуват в някое от другите прочетени числа

Пример:

Вход :6 25 21 10242 42210 52 24021

Изход 5

Ограничения 2 < N ≤ 106 ;

прочетените числа са по-малки от 264. Гарантирано е, че прочетените числа са различни.

Обяснение на примера Чрез разместване на цифрите на 25 може да се получи 52. Вярно е и обратното твърдение – чрез разместване на цифрите на 52 може да се получи 25. До тук две измежду прочетените числа отговарят на исканото условие. Подобни съображения са валидни и за трите петцифрени числа от прочетените. Или общо пет от прочетените числа отговарят на условието

Че това е елементарно. Вкарваш цифрите на всяко число във вектор, сортираш всеки един от векторите и намираш броя на еднаквите вектори. Това ти е отговора на задачата.

#include <iostream>

using namespace std;

#define  NMAX 106

typedef unsigned long long  ulong;
int nums[10] = {0};

ulong hash(ulong x)
{
     ulong r=0;
     
     while (x) 
     {
         ++nums[x%10];
         x/=10;
     }
     
     for (int i=9; i>=0; --i)
     {
         while (nums[i])
         {
              r=r*10+i;
              --nums[i];
         }
     }
     return r;
}

int main()
{
    int N, BR=0, F[NMAX];
    ulong A[NMAX], B[NMAX];
    while (1)
    {
        cout<<"N = ";
        cin>>N;
        if (N>1 && N<=NMAX) break;
        cout<<"N ot 2 do "<<NMAX<<endl<<endl;
    }
    
    for (int i=0; i<N; ++i)
    {
        cout<<"A["<<i<<"] = ";
        cin>>A[i];
        B[i]=hash(A[i]);
        F[i]=1;
    }
    
    for (int i=0; i<N-1; ++i)
        for (int j=i+1; j<N; ++j)
            if (B[i]==B[j])
            {
                BR=BR+F[i]+F[j];
                cout<<BR<<". "<<A[i];
                if (F[i]) cout<<'*'; else cout<<' ';
                cout<<"  "<<A[j];
                if (F[j]) cout<<'*'; else cout<<' ';
                cout<<endl;
                F[i]=0;
                F[j]=0;
            } 
    cout<<endl<<"BR = "<<BR<<endl;
}

 

Ами аз имах предвид нещо такова

#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#include<numeric>

std::vector<int> getDigits(int number)
{
	std::vector<int> digits;
	for ( ; number; number /= 10 )
	{
		int lastDigit = number % 10;
		digits.push_back(lastDigit);
	}

	std::sort(digits.begin(), digits.end());

	return digits;
}

int main()
{
	int n;
	std::cin >> n;

	std::vector<int> count(n, 0);
	std::set<std::vector<int>> numbers;
	for (int i = 0; i < n; i++)
	{
		int m;
		std::cin >> m;
		std::vector<int> digits = getDigits(m);
		if (!numbers.insert(digits).second)
		{
			if (!count[digits.size()])
				count[digits.size()] += 2;
			else
				count[digits.size()]++;
		}
	}

	std::cout << std::accumulate(count.begin(), count.end(), 0) << std::endl;
}

:)



Трябва ми някакво решение на следната задача, на C++ или Java ...Ще съм много благодарен на всеки опитал се да помогне! 
Напишете програма  която прочита от стандартния вход броя N на естествени числа, които ще анализира. След това програмата трябва да прочете тези N числа и да отпечата на един ред на стандартния изход броя на тези от тях, които могат, чрез разместване на цифрите в записа им да се преобразуват в някое от другите прочетени числа
Пример:
Вход :6 25 21 10242 42210 52 24021
Изход 5
Ограничения 2 прочетените числа са по-малки от 264. Гарантирано е, че прочетените числа са различни.
Обяснение на примера Чрез разместване на цифрите на 25 може да се получи 52. Вярно е и обратното твърдение – чрез разместване на цифрите на 52 може да се получи 25. До тук две измежду прочетените числа отговарят на исканото условие. Подобни съображения са валидни и за трите петцифрени числа от прочетените. Или общо пет от прочетените числа отговарят на условието


Виждам, че вече са ти отговорили, но (лично за мен) условието ти е малко неясно.
1. Какви са тези N числа (на входа)?
2. За огледални числа ли става дума (при три- и повече цифрените) или просто числа, в който има (като вид и брой) еднакви цифри?
Пример: Числата „10242” и „42210” са от втория вид. Имат по една 1-ца, по две 2-ки, по една 4-ка и по една нула.
3. На изхода - само броя на числата ли трябва да се отпечара, или да се цитират самите числа?

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.