Zadatak sa drzavnog takmicenja

Imam pitanje oko zadatka Problems/Oduzmi (ne smem staviti pun link, zato sto sajt pomisli da sam spam i dobijem neki restriction…) . Kako da manipulisem tj. koristim brojeve vece nego sto promenjiva moze da podrzi, posto neki ulazi u test primerima su mnogo veci od maksimalnog broja koji promenjiva moze da podrzi. Pokusao sam rastavljati broj ali mi ne uspeva.

Evo ga kod:

#include "iostream"
#include "iomanip"
using namespace std;

int main(){
unsigned long long A, k, br1=0, p1, br2, br3;

cin >> A;

k=A;

for(br1;k>0;br1++){
	k/=10;
}

k = A;

unsigned long long minC[br1];

for(int i=0;i<br1;i++){
	minC[i] = k%10;
	k/=10;
}

for(int i=0;i<br1;i++){
	for(int g=i+1;g<br1;g++){
		if(minC[i]>minC[g]){
			p1 = minC[i];
			minC[i]=minC[g];
			minC[g]=p1;
		}
	}
}

k=A;

unsigned long long maxC[br1];

for(int i=0;i<br1;i++){
	maxC[i] = k%10;
	k/=10;
}

for(int i=0;i<br1;i++){
	for(int g=i+1;g<br1;g++){
		if(maxC[i]<maxC[g]){
			p1 = maxC[i];
			maxC[i]=maxC[g];
			maxC[g]=p1;
		}
	}
}




br2=maxC[0];
br3=minC[0];

for(int i=1;i<br1;i++){
	br2*=10;
	br2+=maxC[i];
}

for(int i=1;i<br1;i++){
	br3*=10;
	br3+=minC[i];
}


cout << br2 - br3;

return 0;	
}

Hvala unapred

1 Like

Imao sam ovaj zadatak na državnom 2015. godine, kada sam bio 5. razred. Cilj ovog zadatka je po meni manipulacija stringovima tako da mi se ne čini da nije potrebno koristiti long long nizove. Rešio sam ovaj zadatak u složenosti O(n log n), i to samo zbog sortiranja, inače je linearno. Ako želiš , poslaću ti moj kod :slight_smile: Ako ne , pokušaj da razmisliš kako funkcioniše oduzimanje(sa potpisivanjem),ako se sećaš toga od ranije iz škole i pokušaj da implementiraš tu ideju. Na početku samo razmisli i kako da dobiješ najmanji i največi broj iz niza cifara. :wink:
Brojevi će biti preveliki i za unsigned long long, pokušaj da primeniš stringove(samo da budem jasan)

1 Like

Hvala puno, ako nije problem posalji kod, jer trenutno imam puno obaveza oko upisa u skolu tkd ne mogu trenutno to pokusati :slight_smile:

Ovo resenje je radilo kod mene: Link do koda