Добавление кода STL C ++ 11 на основе решения, предложенного @Pham Trung. Может быть удобно.
#include <iostream>
#include <set>
int main() {
int N;
std::cin>>N;
for (int nn=0;nn<N;nn++){
long long n,m;
std::set<long long> mSet;
long long maxVal = 0; //positive input values
long long sumVal = 0;
std::cin>>n>>m;
mSet.insert(m);
for (long long q=0;q<n;q++){
long long tmp;
std::cin>>tmp;
sumVal = (sumVal + tmp)%m;
auto itSub = mSet.upper_bound(sumVal);
maxVal = std::max(maxVal,(m + sumVal - *itSub)%m);
mSet.insert(sumVal);
}
std::cout<<maxVal<<"\n";
}
}
. Это связано с тем, что компонент Auth удаляет пароль из массив данных (в целях безопасности). почему вы вообще хотите, чтобы он содержал пароль? логика «запомни меня» (которую, как я полагаю, вы используете из полей формы) будет обрабатывать вход в систему без пароля.
У меня была та же проблема с некоторой аутентификацией ExtJS, над которой я работал несколько недель назад.
Странный обходной путь - перейти на /config/core.php
и временно измените уровень отладки, например, измените с Configure :: write ('debug', 0);
на Configure :: write ('debug', 1);
, а затем запустите свой код - не обязательно часть с компонентом Auth - (и после этого измените уровень отладки обратно, если хотите). $ this-> data ['User'] ['password']
теперь будет заполнено хеш-значением, как и предполагалось.
Причина, по которой это в первую очередь, все еще лучше меня :)
Я также хотел бы увидеть вашу функцию login (), но эта проблема действительно кажется странной. Вы можете обойти это, переименовав поле пароля, а затем внутри функции входа сделайте что-то вроде:
$this->data['password']=$this->Auth->password($this->data['User']['pwd']);
//now you can call $this->Auth->login and it will work