Pagini recente » Cod sursa (job #1836138) | Cod sursa (job #3219402) | Cod sursa (job #2529144) | Cod sursa (job #1636517) | Cod sursa (job #2420370)
#include <fstream>
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int const modulo = 9901;
int sumdiv(int n){
int ans, old;
ans = 1;
while(n % 2 == 0){
ans = (ans * 2 + 1) % modulo;
n /= 2;
}
for(int i = 3;i * i <= n;i+=2){
old = ans;
while(n % i == 0){
ans = (ans * i + old) % modulo;
n /= 10;
}
}
if(n != 1){
ans = (ans * n + ans) % modulo;
}
return ans;
}
long long logpow( long long n , int pow, long long left){
if(pow == 0){
return 0;
}if(pow == 1){
return n * left;
}if(pow % 2 == 1){
return logpow(n * n, (pow - 1) / 2, left * n);
}else{
return logpow(n * n, (pow - 1) / 2, left);
}
}
int main()
{
int n, m;
in >> n >> m;
out << sumdiv(logpow(n % modulo, m, 1));
return 0;
}