Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define MOD 6669666ULL
- using namespace std;
- #define NMax 1000
- typedef int Huge[NMax];
- void Atrib0(Huge H)
- {
- H[0]=1;
- H[1]=0;
- }
- void AtribValue(Huge H,unsigned long long X)
- {
- H[0]=0;
- while(X)
- ++H[0],H[H[0]]=X%10ULL,X/=10ULL;
- }
- unsigned long long Putere(unsigned long long a, unsigned long long b)
- {
- unsigned long long p=1;
- if(a==0)
- return 0ULL;
- if(a==1)
- return 1ULL;
- if(b==0)
- return 1ULL;
- if(b==1)
- return a%MOD;
- while(b)
- {
- if(b%2==0)
- a=(a%MOD*a%MOD)%MOD,b/=2;
- else
- p=(p%MOD*a%MOD)%MOD,--b;
- }
- return p;
- }
- void Add(Huge A,Huge B) /// A <- A+B
- {
- int i,T=0;
- if(B[0]>A[0])
- {
- for(i=A[0]+1;i<=B[0];)
- A[i++]=0;
- A[0]=B[0];
- }
- else
- for(i=B[0]+1;i<=A[0];)
- B[i++]=0;
- for(i=1;i<=A[0];++i)
- A[i]+=B[i]+T,T=A[i]/10,A[i]%=10;
- if(T)
- A[++A[0]]=T;
- }
- int main()
- {
- int n;
- ifstream f("test.in");
- f>>n;
- unsigned long long a[n],b[n];
- for(int i=0;i<n;++i)
- f>>a[i];
- for(int i=0;i<n;++i)
- f>>b[i];
- Huge S,AlaB;
- Atrib0(S); /// S <- 0
- for(int i=0;i<n;++i)
- AtribValue(AlaB,Putere(a[i],b[i])),Add(S,AlaB); /// S <- S + AlaB
- f.close();
- ofstream g("test.out");
- for(int i=S[0];i>0;--i)
- g<<S[i];
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement