100 бед - 1 ресет
Товарищи, такая задача: подсчитать количество различных цифр в массиве. n - размер массива, k - количество различных чисел. Задача то не сложная, но как это сделать за n+k шагов?
Я тут набросал немного.. Не знаю, правильный ли ход мыслей? Что скажите?
int func(char A[], int n) // 1
{
int T=0;
for(int i=0;i<n;i++) //O(n)
{
switch(A[i])
{
case 1: T|=1; break;
case 2: T|=2; break;
case 3: T|=4; break;
case 4: T|=8; break;
case 5: T|=16; break;
case 6: T|=32; break;
case 7: T|=64; break;
case 8: T|=128; break;
case 9: T|=256; break;
case 0: T|=512; break;
}
}
i=0;
for(;T!=0;T>>=1)
{
if((1&T)==1)
i++;
}
return i;
}