Pagini recente » Cod sursa (job #635424) | Cod sursa (job #2514854) | Cod sursa (job #2873559) | Cod sursa (job #2722782) | Cod sursa (job #2773504)
#include <bits/stdc++.h>
#define MOD 1000000007
using namespace std;
long long a, b, n, x;
long long cn, ca, sol=1, soll=1, solll=1;
int main (){
///a^n*x + b*(a^n-1)/(a-1)
cin>>a>>b>>n>>x;
///a^n * x
sol=x;
cn=n; ca=a;
while(cn){
if(cn%2 == 1)
sol = (long long)sol * ca % MOD;
cn/=2;
ca=(long long)ca * ca % MOD;
}
///b * (a^n-1)
soll=1;
cn=n; ca=a;
while(cn){
if(cn%2 == 1)
soll = (long long)soll * ca % MOD;
cn/=2;
ca=(long long)ca * ca % MOD;
}
soll = (soll + MOD - 1) % MOD;
soll=(long long)soll * b % MOD;
///soll / (a-1)
///soll * (a-1)^-1
///soll * (a-1)^(MOD-2) % MOD
if(a == 1){
soll=n%MOD;
}else{
solll=1;
cn=MOD-2;
ca=a-1;
while(cn != 0){
if(cn%2 == 1)
solll = (long long)solll * ca % MOD;
cn/=2;
ca = (long long)ca * ca % MOD;
}
soll = (long long)soll * solll % MOD;
}
sol = (sol%MOD + soll%MOD)%MOD;
cout<<sol;
return 0;
}