Показать сообщение отдельно
Старый 29.04.2014, 11:53
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 1  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Можно все числа от 1 до N сложить и получить их общую сумму. Затем сложить все элементы массива. Если мы точно знаем, что из массива удалили только одно число, значит разница сумм будет равна искомому числу. Типа вот так:

Код AS3:
var array:Array = ...;
var n:int = array.length + 1; // потому что одно число удалили.
var nSum:int = 0;
var arrSum:int = 0;
 
for (var i:int = 0; i < n; i++)
{
    nSum += i;
 
    if ((n - i) > 1) // можно проверять через array.length, но это типа долго
    {
        arrSum += array[i];
    }
}
 
trace("missing number is: ", nSum - arrSum);
PS
а, ну да, все уже придумали до меня да еще и через прогрессию =) Ну все равно не очень сложная задачка.
__________________
...вселенская грусть