Во-первых, можно и без "Вы", ибо я студЭнт и учусь на 2 курсе. )))
Сложность моего кода M^2, т.к. количество проходов будет увеличиваться пропорционально M^2, а в каждом проходе будет выполняться задача, порядок сложности которой ноль, ибо от M или шага прохода цикла она не зависит.
А на счёт неправильного условия - а где, простите, щас в школе можно найти нормального препода по информатике, который хотя бы подбирает реальные жизненные задачи, и знает хотя бы не меньше своих учеников? )))
Лично я такого, к сожалению, не видел.
public class NumbersCount {
//~ Methods --------------------------------------------------------------------------------------------------------
public static void main(String args[]) {
Map<Integer, Set<Integer>> numbers = new HashMap<Integer, Set<Integer>>();
int tmpValue = 0;
for (int i = 1; i < 101; i++) {
tmpValue = i % 3;
if (!numbers.containsKey(tmpValue)) {
numbers.put(tmpValue, new HashSet<Integer>());
}
numbers.get(tmpValue).add(i);
}
System.out.println("result: ");
System.out.println(numbers);
}
}
result:
{0=[69, 3, 6, 66, 9, 78, 12, 72, 15, 75, 84, 87, 18, 81, 21, 93, 24, 27, 90, 30, 33, 99, 39, 96, 36, 42, 45, 51, 48, 54, 57, 63, 60], 1=[1, 70, 4, 64, 7, 67, 76, 10, 79, 13, 73, 85, 16, 19, 82, 22, 25, 94, 88, 28, 91, 31, 34, 100, 97, 37, 43, 40, 46, 49, 55, 52, 58, 61], 2=[68, 2, 71, 5, 65, 8, 77, 11, 14, 74, 17, 86, 80, 20, 83, 23, 92, 95, 26, 89, 29, 35, 32, 98, 38, 41, 47, 44, 50, 53, 59, 56, 62]}
Нет, сложность твоего кода M^2... Т.к. формула вычисления числа комбинаций из M по n в общем случае сводится к M^2 (но при малых n или M-n сложность будет стремиться к M - получатся в числителе и знаменателе большие факториалы, которые сократятся)... И с учётом того что операции с большими числами прийдётся реализовывать программно - ещё logM, и того M^2*logM в общем случае и ~M*logM при n->1, n->M-1.
const
M = 100;
n = 3;
var
startValue,
currentValue : integer;
begin
for startValue := 1 to n do begin
Write(startValue, ' group:');
currentValue := startValue;
while (currentValue <= M) do begin
Write(currentValue, #9);
inc(currentValue, n);
end;
WriteLn;
end;
end;