2 / 6
Feb 2020

Cześć,

Mam problem z zadaniami Czy umiesz potęgować i Dwie cyfry silni- w obu pokazuje mi, że przekroczono limit czasu. Czy ktoś może doradzić co zmodyfikować żeby zadziałało?

  1. Czy umiesz potęgować

#include
using namespace std;

int main()
{

int sets, number, power, powerBase;

cin >> sets;

for (int i = 0; i < sets; i++)
{
	{
		cin >> number >> power;

		powerBase = number;

	}
	for (int y = 1; y < power; y++)
	{
		number *= powerBase;
	}
	
	cout << number % 10 << endl;
}

}

  1. Dwie cyfry silni

#include
using namespace std;

int main()
{
int sets, number, result;

cin >> sets;

for (int i = 0; i < sets; i++)
{
	cin >> number;
	result = number;

	if (number <= 1)
	{
		cout << 0 << " " << 1 << endl;
	}
	else
	{
		for (int y = 1; y < result; y++)
		{
			number = number * y;
		}

		cout << number / 10 % 10 << " " << number % 10 << endl;
	}
}

}

Dziękuję.

  • created

    Feb '20
  • last reply

    Feb '20
  • 5

    replies

  • 966

    views

  • 3

    users

  • 2

    links

Cześć.
Oba zadania byly bardzo dokladnie omowione wiele razy na forum.
SPOILER
Wystepuje przepelnienie w obu programach. Nie ma takiego typu danych, ktory przechowa prawidlowo tak duze liczby.
Trzeba cos zauwazyc w obu zadaniach zeby je rozwiazac.
moim zdaniem:

  1. przydalby sie arkusz kalkulacyjny.
  2. wystarczy kalkulator.
    i policzyc troche “na piechote”.

Dzięki za podpowiedź, udało mi się z zadaniem z silnią, jednak dalej mam problem z potęgami. Wydaje mi się, że zauważyłam zależność pomiędzy liczbami i w jaki sposób to zadanie zoptymalizować, jednak program dalej przekracza limit czasu. Czy mogłabym wiedzieć czy idę w dobrym kierunku czy jest jeszcze jakiś inny sposób na rozwiązanie?

Idziesz w dobrym kierunku. Tą wazniejsza rzecz zauwazylas
Ponizszy fragment mozna zastapic jedna linijką. operator, ktory to zalatwi to % reszta z dzielenia.

			for (int y = 5; y <= power; y++)
			{
				n++;
				if (n > 3)
 
				{
					n = 0;
				}
			}

Druga rzecz ktora mozna zauwazyc dotyczy podstawy. (mozna zauwazyc podczas mnozenia pisemnego wielocyfrowych liczb). Potrzebne to jest aby zabezpieczyc sie przed przepelnieniem. np miliard do potegi 4 to dluga liczba, ktora ladnie sie nazywa, ale nie zmiesci sie do zmiennej calkowitej.