fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N 500005
  4.  
  5. using namespace std;
  6.  
  7. int n;
  8. ll X[N],k;
  9.  
  10. ll power(ll x,ll POWER,ll MOD)
  11. {
  12. ll ret=1;
  13. while(POWER>0){
  14. if(POWER&1)
  15. ret=(ret*x)%MOD;
  16. x=(x*x)%MOD;
  17. POWER>>=1;
  18. }
  19. return ret%=MOD;
  20. }
  21.  
  22. void init()
  23. {
  24. for(int i=0;i<n;++i)
  25. cin >> X[i];
  26. cin >> k;
  27. }
  28.  
  29. ll dfs(ll now,ll MOD)
  30. {
  31. if(now==n-1)
  32. return X[now];
  33.  
  34. ll nextMOD=MOD,tmp=MOD;
  35. for(ll i=2;i*i<=tmp;++i){
  36. if(tmp%i==0)
  37. nextMOD=nextMOD/i*(i-1);
  38. while(tmp%i==0){
  39. tmp/=i;
  40. }
  41. }
  42. if(tmp!=1)
  43. nextMOD=nextMOD/tmp*(tmp-1);
  44. return power(X[now],dfs(now+1,nextMOD),MOD);
  45. }
  46.  
  47. int main()
  48. {
  49. ios_base::sync_with_stdio(false);
  50. cin.tie(nullptr); cout.tie(nullptr);
  51.  
  52. while(cin >> n && n!=0){
  53. init();
  54. cout << dfs(0,k) << endl;
  55. }
  56.  
  57. return 0;
  58. }
  59.  
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
Standard output is empty