Advertisement
a53

Test

a53
Apr 11th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #include <fstream>
  2. #define MOD 6669666ULL
  3. using namespace std;
  4. #define NMax 1000
  5. typedef int Huge[NMax];
  6.  
  7. void Atrib0(Huge H)
  8. {
  9. H[0]=1;
  10. H[1]=0;
  11. }
  12.  
  13. void AtribValue(Huge H,unsigned long long X)
  14. {
  15. H[0]=0;
  16. while(X)
  17. ++H[0],H[H[0]]=X%10ULL,X/=10ULL;
  18. }
  19.  
  20. unsigned long long Putere(unsigned long long a, unsigned long long b)
  21. {
  22. unsigned long long p=1;
  23. if(a==0)
  24. return 0ULL;
  25. if(a==1)
  26. return 1ULL;
  27. if(b==0)
  28. return 1ULL;
  29. if(b==1)
  30. return a%MOD;
  31. while(b)
  32. {
  33. if(b%2==0)
  34. a=(a%MOD*a%MOD)%MOD,b/=2;
  35. else
  36. p=(p%MOD*a%MOD)%MOD,--b;
  37. }
  38. return p;
  39. }
  40.  
  41. void Add(Huge A,Huge B) /// A <- A+B
  42. {
  43. int i,T=0;
  44. if(B[0]>A[0])
  45. {
  46. for(i=A[0]+1;i<=B[0];)
  47. A[i++]=0;
  48. A[0]=B[0];
  49. }
  50. else
  51. for(i=B[0]+1;i<=A[0];)
  52. B[i++]=0;
  53. for(i=1;i<=A[0];++i)
  54. A[i]+=B[i]+T,T=A[i]/10,A[i]%=10;
  55. if(T)
  56. A[++A[0]]=T;
  57. }
  58.  
  59. int main()
  60. {
  61. int n;
  62. ifstream f("test.in");
  63. f>>n;
  64. unsigned long long a[n],b[n];
  65. for(int i=0;i<n;++i)
  66. f>>a[i];
  67. for(int i=0;i<n;++i)
  68. f>>b[i];
  69. Huge S,AlaB;
  70. Atrib0(S); /// S <- 0
  71. for(int i=0;i<n;++i)
  72. AtribValue(AlaB,Putere(a[i],b[i])),Add(S,AlaB); /// S <- S + AlaB
  73. f.close();
  74. ofstream g("test.out");
  75. for(int i=S[0];i>0;--i)
  76. g<<S[i];
  77. g.close();
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement