求大整数求幂取模问题

求13050000的1757316971次幂mol5515596313
一个是用函数算,一个是直接算,但是结果不一样,请问一下这是为什么啊

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int Encrypt(unsigned long long a,unsigned long long m,unsigned long long n)//求a的m次幂mol n 
{
    unsigned long long i,d=1;
    for(i=0;i<m;i++)
    {
        d=d*a%n;
    }
    return d;
}
int main()
{
    unsigned long long f;
    f=Encrypt(13050000,1757316971,5515596313);
    cout<<f<<endl;
    unsigned long long i,d=1;
    for(i=0;i<1757316971;i++)
    {
        d=d*13050000%5515596313;
    }
    cout<<d;
}

把函数的返回值改为unsigned long long类型啊,int型肯定不够大啊