У меня возникли проблемы с решением проблемы по модулю арифметики - PullRequest
0 голосов
/ 12 июня 2019

мне нужно применить модуль e = 10 ^ 9 + 7 к данному выражению i * (n + k-2) - ((i * (i + 1) * (n-1)) / 2) где iв терминах п и к.n и k вводятся пользователем.2≤N≤10 ^ 18 1≤K≤10 ^ 18

Я попытался использовать модульную арифметику с использованием основ, т.е. (ab)% e = ((a% e) - (b% e))% eи (a b)% e = ((a% e) (b% e))% e.

//i have taken unsigned long long int as the data type for all variables    
    a=1;
    b=1;
    cin>>n>>k;
    i=(n+k-2)/(n-1);
    //s=(i*(n+k-2))-((i*(n-1)*(i+1))/2
    j=(i+1);
    p=n+k-2;
    q=n-1;
    r=i/2;
    u=j/2;
    if(i%2==0)
    {
        a=(a*i)%e;
        a=(a*p)%e;
        b=(b*r)%e;
        b=(b*q)%e;
        b=(b*j)%e;
        s=a-b;

    }
      else
    {
        a=(a*i)%e;
        a=(a*p)%e;
        b=(b*u)%e;
        b=(b*q)%e;
        b=(b*i)%e;
        s=a-b;

    }
    cout<<s%e<<endl;

я получаю правильные ответы для небольших тестовых случаев, но для большихтестовые случаи я не получаю правильный ответ.

...