Tem algum modo de fazer esse exercício com matemática msm? Estou usando força bruta mas o tempo esta muito grande! Demora muito! Alguem poderia me ajudar?
Segue o code:
#include<bits/stdc++.h>
using namespace std;
int k[10010],v[10010],cont;
void vet(){
k[0] = k[1] = 1; v[0] = v[1] = 0;
for(cont=2;cont<10010;cont++){
k[cont] = k[cont-1] * cont;
k[cont] %= 1000000007;
v[cont] = 0;
for(int c=1;c<k[cont];c++){
if(k[cont] % c == 0) v[cont] += c;
}
v[cont] %= 1000000007;
printf("K[%d] = %d || V[%d] = %d\n",cont,k[cont],cont,v[cont]);
}
}
int main(){
vet();
int n;
while(~scanf("%d",&n)){
printf("%d %d\n",k[n],v[n]);
}
return 0 ;
}