Saleh127

uva 10738 tle

Jul 23rd, 2020
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. #define maX 1000002
  5. vector<ll>p;
  6. ll M[maX],mu[maX];
  7. bool marked[maX];
  8. void sieve()
  9. {
  10.  
  11. for(ll i=4; i<=maX; i+=2)
  12. {
  13. marked[i]=1;
  14. }
  15. p.push_back(2);
  16. for(ll i=3; i<=maX; i+=2)
  17. {
  18. if(marked[i]==0)
  19. {
  20. p.push_back(i);
  21. for(ll j=i*i; j<=maX; j+=i+i)
  22. {
  23. marked[j]=1;
  24. }
  25. }
  26. }
  27. }
  28. ll nmoffact(ll x)
  29. {
  30. ll i,cnt=0,ans=0;
  31. for(i=0;i<p.size() && p[i]*p[i]<=x;i++)
  32. {
  33. cnt=0;
  34. while(x%p[i]==0)
  35. {
  36. cnt++;
  37. x/=p[i];
  38. }
  39. if(cnt>1) return 0;
  40. ans+=cnt;
  41. }
  42. if(x>1) ans++;
  43. if(ans%2==0) return 1;
  44. else return -1;
  45. }
  46. int main()
  47. {
  48. sieve();
  49. ll a,i;
  50. mu[1]=1;
  51. M[1]=1;
  52. for(i=2;i<=maX;i++)
  53. {
  54. mu[i]=nmoffact(i);
  55. M[i]=M[i-1]+mu[i];
  56. }
  57. while(scanf("%lld",&a))
  58. {
  59. if(a==0) break;
  60. printf("%8lld%8lld%8lld\n",a,mu[a],M[a]);
  61. }
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment