#Z01853. 来自ycj学长的关怀

来自ycj学长的关怀

题目描述

龟速乘可以有效地保证你的long乘long不会boom的一声炸掉,然后送给你一个神奇的数字。(2个数都小于mod,但是相乘爆long了,此时再mod也无济于事了)

		static long mul(long a,long b,long mod) 

{     long ans=0;     while(b>0)     {         if(b%2==1)ans=(ans+a)%mod;         a=(a*2)%mod;         b=b/2;     }     return ans; } 

		看懂了上面龟速乘的代码,就来练一练手吧!
	
	
		ycj学长说现在有一个数列,要算出第i个数的i次幂并且把每个数计算的值相乘在一起,最后让答案对  梅森素数m=(2^61)-1=2305843009213693951 取模。

输入格式

一组输入包含多组样例。

		每组样例的第一行有一个整数n。(0
	
		接下来一行有n个数,每个数的大小不超过m=2305843009213693951。

输出格式

输出取模后的积。

2
1 2
3
1 2 3
4
108