Advertisement
Farjana_akter

Untitled

Sep 12th, 2020
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. #define mxn 1000000
  5.  
  6.  
  7.  
  8. bool mark[mxn+5]={false};
  9. ll isprime[mxn+5],psize=0;
  10.  
  11.  
  12.  
  13.  
  14. void sieve()
  15. {
  16. mark[0]=true;
  17. mark[1]=true;
  18.  
  19. ll i,j,k;
  20. for(i=2;i*i<=mxn;i++)
  21. {
  22. if(mark[i]==false)
  23. {
  24. for(j=i*i;j<=mxn;j+=i)
  25. mark[j]=true;
  26. }
  27. }
  28. isprime[psize++]=2;
  29. for(i=3;i<=mxn;i+=2)
  30. {
  31. if(mark[i]==false)
  32. isprime[psize++]=i;
  33. }
  34. }
  35.  
  36. ll con(string s)
  37. {
  38. ll i,j,k,num=0;
  39. for(i=0;i<s.size();i++)
  40. {
  41. num=(num*10)+(s[i]-'0');
  42. }
  43. // cout<<"num "<<num<<endl;
  44. return num;
  45. }
  46.  
  47.  
  48. ll arrp[mxn+5],arre[mxn+5],ii=0,jj=0;
  49.  
  50.  
  51. void convert(string s)
  52. {
  53. ll i,j,k,num;
  54. string x="";
  55. ll cnt=1;
  56. for(i=0;i<s.size();i++)
  57. {
  58. if(s[i]==' ')
  59. {
  60. num=con(x);
  61. if(cnt%2==0)
  62. arre[jj++]=num;
  63. else
  64. arrp[ii++]=num;
  65. cnt++;
  66. x="";
  67. }
  68. else
  69. {
  70. x+=s[i];
  71. }
  72. }
  73. arre[jj++]=con(x);
  74. }
  75.  
  76.  
  77. ll makenum()
  78. {
  79. ll i,j,k,n=1,x;
  80. for(i=0;i<ii;i++)
  81. {
  82. x=pow(arrp[i],arre[i])+0.00000001;
  83. n*=x;
  84. }
  85. return n;
  86. }
  87.  
  88. vector<ll>ans,cnt;
  89.  
  90.  
  91. void primefact(ll n)
  92. {
  93. ll i,j,k,c=0;
  94. ans.clear();
  95. cnt.clear();
  96. for(i=0;isprime[i]*isprime[i]<=n && i<psize;i++)
  97. {
  98. c=0;
  99. if(n%isprime[i]==0)
  100. {
  101. while(n%isprime[i]==0)
  102. {
  103. c++;
  104. n/=isprime[i];
  105. }
  106. ans.push_back(isprime[i]);
  107. cnt.push_back(c);
  108. }
  109. }
  110. if(n>1)
  111. {
  112. ans.push_back(n);
  113. cnt.push_back(1);
  114. }
  115.  
  116. for(i=ans.size()-1;i>=0;i--)
  117. {
  118. if(i==ans.size()-1)
  119. cout<<ans[i]<<" "<<cnt[i];
  120. else
  121. cout<<" "<<ans[i]<<" "<<cnt[i];
  122. }
  123. cout<<endl;
  124. }
  125.  
  126.  
  127.  
  128. int main()
  129. {
  130. freopen("input.txt","r",stdin);
  131. freopen("out.txt","w",stdout);
  132. sieve();
  133. string s;
  134. ll i,j,k;
  135. while(getline(cin,s))
  136. {
  137. if(s=="0" && s.size()==1)
  138. break;
  139.  
  140. memset(arre,0,sizeof(arre));
  141. memset(arrp,0,sizeof(arrp));
  142. ii=0,jj=0;
  143. convert(s);
  144. ll n=makenum();
  145. n-=1;
  146. primefact(n);
  147. }
  148. }
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement