2017浙江工業大學-校賽決賽 竹之書
阿新 • • 發佈:2017-08-14
rip += ++ end 現在 長度 clas 解法 long
Description
由於某些原因菲莉絲拿到了賢者之石,所以好像變得很厲害了
好像變得很厲害的菲莉絲想要煉成幻想鄉,其中有一個原料是稗田一族對幻想鄉歷史的記錄。現在菲莉絲拿到了一個被某只魔粘性精神體加密過的的卷軸。
密文通過原文和一個正整數key加密形成,而key和密文又有一定關聯。
現給出密文,求key值
已知密文s和key值關系如下
已知密文s是一串正整數s1,s2,s3……sn,A為s中所有元素的和,B為s中所有元素的積,key為B mod A
數據範圍
si,A在(0,1e17]範圍內
0<n<=100000
Input
第一行T表示數據組數
接下來每組第一行一個n,代表s的長度
接下來n行,每行一個正整數si
Output
每組一行,key值
Sample Input
2
4
1
2
3
4
6
5
6
7
8
9
9
Sample Output
4 32
解法:按照題意來,你會發現居然能過
1 #include<bits/stdc++.h> 2 using namespace std; 3 int t; 4 unsigned long long Mod(unsigned long long x,unsigned long long a,unsigned long long mod){ 5 unsigned long long ans=0; 6 ans%=mod;7 while(a){ 8 if(a&1){ 9 ans=(ans+x)%mod; 10 } 11 ans%=mod; 12 a>>=1; 13 x=(x<<1)%mod; 14 } 15 return ans; 16 } 17 unsigned long long a[123456]; 18 int main(){ 19 scanf("%d",&t); 20 while(t--){ 21 unsigned longlong sum=0; 22 int n; 23 scanf("%d",&n); 24 for(int i=1;i<=n;i++){ 25 scanf("%llud",&a[i]); 26 sum+=a[i]; 27 } 28 unsigned long long ans=1; 29 for(int i=1;i<=n;i++){ 30 ans=Mod(ans,a[i],sum); 31 ans%=sum; 32 } 33 cout<<ans<<endl; 34 } 35 return 0; 36 }
2017浙江工業大學-校賽決賽 竹之書