首页 > 代码库 > 2017浙江工业大学-校赛决赛 竹之书
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浙江工业大学-校赛决赛 竹之书
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。