HDU 5288——OO’s Sequence——————【技巧题】
2015-07-22 19:10
477 查看
OO’s Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 1549 Accepted Submission(s): 559
[align=left]Problem Description[/align]
OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l<=i<=r) , that there's no j(l<=j<=r,j<>i) satisfy ai mod aj=0,now OO want to know
∑i=1n∑j=inf(i,j) mod (109+7).
[align=left]Input[/align]
There are multiple test cases. Please process till EOF.
In each test case:
First line: an integer n(n<=10^5) indicating the size of array
Second line:contain n numbers ai(0<ai<=10000)
[align=left]Output[/align]
For each tests: ouput a line contain a number ans.
[align=left]Sample Input[/align]
5
1 2 3 4 5
[align=left]Sample Output[/align]
23
题目大意:给你一个长度为n的区间。求这个区间内任意子区间中ai没有因子的ai的个数。
解题思路:从左往右遍历a数组得到L数组。对于ai,枚举j 1-->sqrt(ai),如果j是ai的约数并且j已经在ai之前,那么我用max取离i最近的位置;相应的ai/j也是ai的约数,同理如果ai/j也在ai之前,也用max取离i最近的位置。对于R数组,同理可得。
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; #define min(a,b) ((a)<(b)?(a):(b)) #define max(a,b) ((a)>(b)?(a):(b)) const int maxn=1e5+20; const int INF=0x3f3f3f3f; const int MOD=1e9+7; int a[maxn],L[maxn],R[maxn]; int pos[maxn]; int main(){ int n,limj; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } memset(pos,0,sizeof(pos)); for(int i=1;i<=n;i++){ L[i]=0; limj=(int)sqrt(a[i]); for(int j=1;j<=limj;j++){ if(a[i]%j==0){ if(pos[j]){ L[i]=max(L[i],pos[j]); } if(pos[a[i]/j]){ L[i]=max(L[i],pos[a[i]/j]); } } } pos[a[i]]=i; } memset(pos,0,sizeof(pos)); for(int i=n;i>=1;i--){ R[i]=n+1; limj=(int)sqrt(a[i]); for(int j=1;j<=limj;j++){ if(a[i]%j==0){ if(pos[j]){ R[i]=min(R[i],pos[j]); } if(pos[a[i]/j]){ R[i]=min(R[i],pos[a[i]/j]); } } } pos[a[i]]=i; } int sum=0,res; for(int i=1;i<=n;i++){ sum=(sum%MOD+((i-L[i])*(R[i]-i))%MOD)%MOD; } printf("%d\n",sum); } return 0; }
相关文章推荐
- 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绘图
- iPhone之为UIView设置阴影(CALayer的shadowColor,shadowOffset,shadowOpacity,shadowRadius,shadowPath属性)
- 1051. Pop Sequence