NYOJ 902 一道难题
2013-11-17 17:28
253 查看
题目链接~~>
做题感悟:
这题在比赛时只想到正向去 mod ,还是考虑的有点少做的类型少。比完赛后又被 long long 坑了两次真无语。经过这题充分说明做题经验太少,被坑的太少,不长记性。
题意:
给你 n 个数有 m 次询问,求对于每次询问 k , 求出 ( ( A1*A2*A3*……*An ) / Ak ) % mod ;
解题思路:
分别正向 mod一次,再反向 mod 一次。询问 k 时 正向的 f [ k-1 ]*g [ k+1] (反向的)。
代码:
做题感悟:
这题在比赛时只想到正向去 mod ,还是考虑的有点少做的类型少。比完赛后又被 long long 坑了两次真无语。经过这题充分说明做题经验太少,被坑的太少,不长记性。
题意:
给你 n 个数有 m 次询问,求对于每次询问 k , 求出 ( ( A1*A2*A3*……*An ) / Ak ) % mod ;
解题思路:
分别正向 mod一次,再反向 mod 一次。询问 k 时 正向的 f [ k-1 ]*g [ k+1] (反向的)。
代码:
#include<stdio.h> #include<string.h> long long int g[100005],f[100005],a[100005] ; // 需用 long long 谨记 int main() { long long int i,n,m,mod ; while(scanf("%lld%lld%lld",&n,&m,&mod)!=EOF) { g[0]=1 ;g[n+1]=1 ;f[0]=1 ;f[n+1]=1 ; for(i=1 ;i<=n ;i++) { scanf("%lld",&g[i]) ; f[i]=(g[i]*f[i-1])%mod ; } for(i=n-1 ;i>=1 ;i--) g[i]=(g[i+1]*g[i])%mod ; long long int r=0,x ; while(m--) { scanf("%lld",&x) ; a[r++]=(g[x+1]*f[x-1])%mod ; } for(i=0 ;i<r ;i++) if(!i) printf("%lld",a[i]) ; else printf(" %lld",a[i]) ; printf("\n") ; } return 0 ; }
相关文章推荐
- 一道难题 nyoj902
- nyoj-一道难题
- NYOJ239 月老的难题 【二分图最大匹配·匈牙利】
- NYOJ 745 蚂蚁的难题(二)
- NYOJ 673 悟空的难题 数组标记排序
- NYOJ 239-月老的难题
- NYOJ 673 悟空的难题
- NYOJ-小明的难题
- nyoj 239 月老的难题(匈牙利算法+邻接表)
- 环境记录初始化对函数变量的影响-对前端微专业群内一道难题的解析
- 每天一道题 NYOJ 906 杨辉三角 (难度1)
- nyoj239月老的难题
- NYOJ 239-月老的难题
- nyoj744 蚂蚁的难题(-)
- nyoj 月老的难题
- NYOJ 题目745 蚂蚁的难题(二)(dp)
- NYOJ239 月老的难题(匈牙利算法)
- nyoj 525 一道水题【字符串(分割)】
- NYOJ 525 一道水题
- 一道难题