этот код не должен возвращать ноль каждый раз? - PullRequest
0 голосов
/ 20 апреля 2020

Здравствуйте, я не знаю, что не так с конкретным случаем, когда размер вектора равен 1. и значение в векторе такое же, как n. Так что в этом случае этот код всегда должен возвращать ноль. Но он возвращает другое большое значение для большого случая. Хотя я не знаю точно, какой это случай, но я знаю, что для этого случая размер вектора равен единице, а значение этого элемента равно n. мод 1000000009 вот код

        ll powerm(ll x, ll y, ll p)
        {
          if(y==0)
          {
            return 1;
          }
          ll res=powerm(x,y/2,p);
          if(y%2==0)
          {
            return ((res%p)*(res%p))%p;
          }
          else
          {
            ll val=((res%p)*(res%p));
            return ((val%p)*(x%p))%p;
          }
        }
    int main()
    {
        vector <ll> s;
        //there is some algo in between but after that vector contains just one element and value is n.
        for(ll i=0;i<s.size();i++)
          {
            ans+=powerm(s[i],k,mod);
            ans%=mod;
            cur+=s[i];
          }
          ans-=cur;
          if(ans<0)
          {
            ans+=mod;
          }
          ans+=n;
          ans%=mod;
          ll fans=powerm(n,k,mod);
          fans-=ans;
          if(fans<0)
          {
            fans+=mod;
          }
          cout<<fans<<endl;
...