2012中南大学校赛D题 - 很好的思维题...
2012-04-17 00:47
218 查看
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1163
这题首先提醒的是做除法再模一个数..分子分母分别模了后再相除是得不到正确结果的...开始这题纠结了很久..想了同余方程..甚至讨论了线段树...最后想通了还是So eazy的,
由于乘法是可以分别取模再相乘的...本题的方法和经典DP问题合唱队形差不多...算出从第一个数开始一路乘到每个数的值和每个数一路乘到最后一个数的值..这两个过程都是O(n)的..正扫一遍..反扫一遍就ok了...然后...就不用说了吧...
CSU的OJ真是奇葩...是定义long long....格式控制用%lld....PE了好几次....
Program:
这题首先提醒的是做除法再模一个数..分子分母分别模了后再相除是得不到正确结果的...开始这题纠结了很久..想了同余方程..甚至讨论了线段树...最后想通了还是So eazy的,
由于乘法是可以分别取模再相乘的...本题的方法和经典DP问题合唱队形差不多...算出从第一个数开始一路乘到每个数的值和每个数一路乘到最后一个数的值..这两个过程都是O(n)的..正扫一遍..反扫一遍就ok了...然后...就不用说了吧...
CSU的OJ真是奇葩...是定义long long....格式控制用%lld....PE了好几次....
Program:
#include<iostream> #include<stdio.h> #define ll long long using namespace std; ll n,m,s[100005],a[100005],b[100005],ans[100005]; int main() { int i; while (~scanf("%lld%lld",&n,&m)) { for (i=1;i<=n;i++) scanf("%lld",&s[i]); a[0]=a[n+1]=b[0]=b[n+1]=s[0]=s[n+1]=1; for (i=1;i<=n;i++) a[i]=(s[i]*a[i-1])%m; for (i=n;i>=1;i--) b[i]=(s[i]*b[i+1])%m; for (i=1;i<=n;i++) { if (s[i]==0) ans[i]==1; else ans[i]=(a[i-1]*b[i+1])%m; } printf("%lld",ans[1]); for (i=2;i<=n;i++) printf(" %lld",ans[i]); printf("\n"); } return 0; }
相关文章推荐
- 2012中南大学校赛F题 - 旋转卡壳的思维...
- 2012中南大学校赛H题 - 缩点最小割
- 2016年中南大学校赛镜像赛(校外队伍)
- [2012校赛新生组]狡兔三窟
- ZJUT 2012校赛决赛-涂颜色
- SCUT校赛131:小P玩游戏II(贪心 & 思维)
- 华为任正非与2012实验室座谈会纪要- 看看中国最一流的企业家的战略思维
- hdu 2015校赛1002 Dual horsetail (思维题 )
- GDUT2017校赛:Problem H: tmk买礼物(思维)
- 很好的一道思维题目(有坑点的)
- 2016年中南大学校赛镜像赛
- (思维分析)湘大校赛,C.Digit
- “师创杯”山东理工大学第九届ACM程序设计竞赛 正式赛 F.校赛~校赛~【思维+规律题】
- 中南大学2012暑期集训中期检测训练赛“跳跳”解题报告
- 2017浙工大之江学院校赛 C 组合数学+思维
- HDU 4272LianLianKan 2012长春网络赛F题(思维) 暴力,dfs可以水过,正解是状态压缩dp
- codeforces 500C New Year Book Reading (贪心,很好的思维题)
- (思维分析,贪心)湘大校赛,D.最小的数
- SCUT校赛130:对抗女巫的魔法碎片(思维)
- 之江学院2017ACM 校赛 Problem K: qwb与小数(思维 快速幂)