Advertisement
a53

Multiplu1

a53
May 5th, 2017
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. #include<cstdio>
  2.  
  3. const int N=30;
  4. const int M=10000;
  5.  
  6. int n,k,nr,d[N];
  7.  
  8. void desc(int n)
  9. {
  10. for(int i=2;i*i<=n;++i)
  11. if(n%i==0)
  12. {
  13. d[++nr]=0;
  14. while(n%i==0)
  15. {
  16. n/=i;
  17. ++d[nr];
  18. }
  19. }
  20. if(n!=1)
  21. d[++nr]=1;
  22. }
  23.  
  24. int pow(int a,int n)
  25. {
  26. int p=1;
  27. while(n)
  28. {
  29. if(n&1)
  30. p=p*a%M;
  31. a=(a*a)%M;
  32. n>>=1;
  33. }
  34. return p;
  35. }
  36.  
  37. int calcul()
  38. {
  39. int p=1,t;
  40. desc(n);
  41. for(int i=1;i<=nr;++i)
  42. {
  43. t=pow(1+d[i],k)-pow(d[i],k);
  44. if(t<0)
  45. t+=M;
  46. p=p*t%M;
  47. }
  48. return p;
  49. }
  50.  
  51. int main()
  52. {
  53. freopen("multiplu1.in","r",stdin);
  54. freopen("multiplu1.out","w",stdout);
  55. scanf("%d%d",&n,&k);
  56. printf("%d\n",calcul());
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement