Insieme K-free cosa sbaglio!?

Sto provando a risolvere Kfree ma credo di aver considerato male qualcosa, da come ho capito il problema per risolverlo basta: quando inserisco un valore v tolgo dai possibili valori inseribili v*k

#include<fstream>
#include<algorithm>
using namespace std;
bool  multiplo[100000];
long long int Trova(int N, int K, int insieme[]){
   sort(insieme, insieme+N);
   long long int soluzioni=0;
   for(int i=0;i<N;i++)
   {
   	if(multiplo[insieme[i]]==false)
   	{
   		if(insieme[i]*K<=100000)
   			multiplo[insieme[i]*K]=true;
   		soluzioni++;
   	}
   }
   return soluzioni;
}

Quale stupido errore sto facendo?

Prova a partire dal numero più alto, non dal più basso.

Cosa cambia? Alla fine quale se elimino a e tengo a*k o viceversa è la stessa cosa no? Contando che esiste una coppia per ogni valore

1 Mi Piace

Hai considerato il caso in cui K=1?

2 Mi Piace

Ok quello potrebbe essere un errore ma mi sbaglia tutto il subtask 2 e 4

1 Mi Piace

Sicuro che il valore massimo sia giusto?

2 Mi Piace

Se i possibili valori arrivano fino a 100000, supponendo che a*k>100000 a può essere basta che a/k non faccia parte delle.sequenza .

Se mi sbaglio dimmi pure un input di prova.

1 Mi Piace

Non mi riferivo a questo, prova a sostituire con 100001

2 Mi Piace

Hai ragione, che errore stupido.
Grazie mille!!

1 Mi Piace