Nu aveti permisiuni pentru a descarca fisierul grader_test15.ok
Cod sursa(job #1974332)
| Utilizator | Data | 27 aprilie 2017 13:23:00 | |
|---|---|---|---|
| Problema | Suma divizorilor | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <fstream>
using namespace std;
const int MOD=9901;
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
long long a,b,s=1;
int putere(long long x,long long p)
{
x%=MOD;
long long sol=1;
for(;p;p=p/2)
{
if(p&1) sol=(sol*x)%MOD;
x=(x*x)%MOD;
}
return sol;
}
long long solve(long long i,long long p)
{
if(i%MOD==1) return p*b+1;
return (putere(i,1LL*p*b+1)+MOD-1)*(putere(i-1,MOD-2))%MOD;
}
int main()
{
f>>a>>b;
long long t=a;
for(int i=2;i*i<=a;++i)
{
int p=0;
while(t%i==0) t/=i,++p;
if(p) s*=solve(i, p),
s%=MOD;
}
if(t>1) s*=solve(a,1),
s%=MOD;
g<<s;
}
