2017浙江工业大学-校赛决赛 竹之书
Posted 樱花落舞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017浙江工业大学-校赛决赛 竹之书相关的知识,希望对你有一定的参考价值。
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 long long 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浙江工业大学-校赛决赛 竹之书的主要内容,如果未能解决你的问题,请参考以下文章