Поскольку n
является типом int
, n * n
также является типом int
. В C ++ нет «динамического расширения».
Запись 1LL * n * n
вызывает неявное преобразование типов n
s в long long
.
Наконец, обратите внимание, что даже 100000
может быть слишком большим для int
- std::numeric_limits<int>::max()
может быть столь же маленьким, как 32767. Если вы хотите, чтобы ваш код был portable вам нужно написать long n = 100000;
и выражение для t
как указано.