Cod sursa(job #2366438)

Utilizator danielsociuSociu Daniel danielsociu Data 4 martie 2019 20:06:24
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb

#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define pb push_back
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define FORS(i,a,b) for(int i=(a);i<(b);++i)
#define PII pair<int,int>
#define VI vector<int>
#define VPII vector<PII>
#define all(x) x.begin(),b.end()
#define SZ(x) ((int)(x).size())
#define ll long long
#define MOD 9901 //998244353
const int inf=0x3f3f3f3f;
#define maxn 22

ll calc;
int a,b,k=2,cnt,sol;
int prim[maxn],freq[maxn];

int main()
{
	freopen("in.in","r",stdin);
	freopen("sumdiv.out","w",stdout);
	cin>>a>>b;
	while(a>1){
		if(a%k==0){
			prim[++cnt]=k;
			while(a%k==0)a/=k,++freq[cnt];
		}
		++k;
	}
	FOR(i,1,cnt){
		calc=prim[i];
		int pasi=(1LL*freq[i]*b)%MOD;
		for(int pas=1;pas<=(freq[i]*b);calc=(calc*prim[i])%MOD,++pas);
		calc--;
		sol=(sol+(calc/(prim[i]-1)))%MOD;
	}
	cout<<sol;
}