hdu 5288 OO’s Sequence(15多校第一场1001)
2015-07-22 19:25
459 查看
//15多校第一场 1001 暴力 //若有多数需要求因子,且数的范围较小,可以考虑预处理 #include<cstdio> #include<algorithm> #include<vector> using namespace std; const int N=100100; int a ; vector<int>f[10010],vec[10010]; const long long M=1000000007; int n; #define MAX(a,b) a<b?b:a #define MIN(a,b) a<b?a:b typedef long long LL; void init(){ for(int i=1;i<=10000;i++) for(int j=1;j*i<=10000;j++) f[i*j].push_back(i); } LL find(int pos,int ai){ int l=0,r=n+1; for(int i=0;i<f[ai].size();i++){ int fac=f[ai][i]; for(int j=0;j<vec[fac].size();j++){ if(vec[fac][j]<pos){ if(l<vec[fac][j])l=vec[fac][j]; } if(vec[fac][j]>pos){ if(vec[fac][j]<r)r=vec[fac][j]; } } } return (LL)(r-pos)*(pos-l)%M; } int main(){ init(); while(scanf("%d",&n)!=EOF){ for(int i=0;i<=10000;i++) vec[i].clear();//从1到10000清零 for(int i=1;i<=n;i++){ scanf("%d",&a[i]); vec[a[i]].push_back(i);//每一个ai的位置 } long long sum=0; for(int i=1;i<=n;i++){ sum=(sum+find(i,a[i])%M)%M; } printf("%lld\n",sum); } return 0; }
相关文章推荐
- Snail—UI学习之UIButton
- HDU 5288——OO’s Sequence——————【技巧题】
- Android blueZ HCI(一个):hciconfig实施和经常使用
- 数据类型转换 和 break,continue语句
- 猫猫学iOS 之微博项目实战(3)微博主框架-UIImage防止iOS7之后自动渲染_定义分类
- PHP生成百万个UID存入文件、插入数据库
- error:unknow filesystem grub rescue
- Cursor query
- soapui中文操作手册(一)----创建一个新的项目
- Android酷炫实用的开源框架(UI框架)
- js检测元素value改变
- UIView中常见的方法总结
- 编译apk的时候提示value for 'keystore' is not valid
- 2015 Multi-University Training Contest 1 - 10010 Y sequence
- 使用JS获取多组radio的value并判断是否选中
- WIZnet助力Arduino中文社区第三届开源硬件开发大赛!
- Snail—UI学习之UILabel
- HDU 4740——The Donkey of Gui Zhou
- [Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations) 5
- 【iOS学习】三、利用UIBezierPath绘图