2015 Multi-University Training Contest 1 Hdu5288 OO’s Sequence
来源:互联网 发布:c语言代码在线测试 编辑:程序博客网 时间:2024/05/21 08:53
OO’s Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 449 Accepted Submission(s): 158
Problem Description
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).
Input
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)
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)
Output
For each tests: ouput a line contain a number ans.
Sample Input
51 2 3 4 5
Sample Output
23
Source
2015 Multi-University Training Contest 1
水题,筛法+枚举i
两个数组,L[i]记录离i最近的非互质的j<i,R[i]记录离i最近的非互质的i<j,通过枚举A[i],ans+=(R[i]-i+1)*(i-L[i]+1)/2 %MOD
#include<cstdio>#include<iostream>#include<algorithm>using namespace std;long long n;long long d[10005];long long a[100005];long long l[100005];long long r[100005];#define MOD 1000000007int main(){ while(~scanf("%lld",&n)) { for(long long i = 0;i<n;i++) scanf("%lld",a+i); for(long long i = 1;i<=10000;i++)d[i] = -1; for(long long i = 0;i<n;i++) { long long tmp = -1; for(long long t = 1;t*t<=a[i];t++) if(a[i]%t==0) { tmp = max(tmp,d[t]); tmp = max(tmp,d[a[i]/t]); } tmp = max(tmp,d[a[i]]); l[i] = tmp+1; for(long long t = a[i];t<=10000;t+=a[i]) d[t] = i; } for(long long i = 1;i<=10000;i++)d[i] = n; for(long long i = n-1;i>=0;i--) { long long tmp = n; for(long long t = 1;t*t<=a[i];t++) if(a[i]%t==0) { tmp = min(tmp,d[t]); tmp = min(tmp,d[a[i]/t]); } tmp = min(tmp,d[a[i]]); r[i] = tmp-1; for(long long t = a[i];t<=10000;t+=a[i]) d[t] = i; } long long ans = 0; for(long long i = 0;i<n;i++) { ans=(ans + (r[i]-i+1)*(i-l[i]+1))%MOD; // cout<<i<<":"<<l[i]<<" "<<r[i]<<endl; } printf("%lld\n",ans); }}
0 0
- 2015 Multi-University Training Contest 1 Hdu5288 OO’s Sequence
- 2015 Multi-University Training Contest 1OO’s Sequence hdu5288
- 2015 Multi-University Training Contest 1 OO’s Sequence
- hdu 5288 OO’s Sequence 2015 Multi-University Training Contest 1
- hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)
- hdu 5289 OO’s Sequence 2015 Multi-University Training Contest 1
- hdu 5288 OO’s Sequence 2015 Multi-University Training Contest 1
- HDU 5288 OO’s Sequence (from: 2015 Multi-University Training Contest 1)
- HDU 5288 OO’s Sequence(数学)——2015 Multi-University Training Contest 1
- hdu5288(2015多校1)OO’s Sequence
- 2015 Multi-University Training Contest 1 Hdu 5297 Y sequence
- HDU5288 OO’s Sequence
- HDU5288 OO’s Sequence
- hdu5288 OO’s Sequence
- 2015 Multi-University Training Contest 1
- 2015 Multi-University Training Contest 1记录
- 2015 Multi-University Training Contest 1
- 2015 Multi-University Training Contest 1
- DXP设计PCB技巧
- codeforces 549H Degenerate Matrix(二分)
- C++设计模式之 -- 桥接模式 (Bridge)
- HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)
- 关于java基础--面向对象的特性
- 2015 Multi-University Training Contest 1 Hdu5288 OO’s Sequence
- Record-2-6
- poj 2366 Sacrament of the sum
- R cannot be resolved to a variable的原因
- Node.js Express连接mysql完整的登陆注册系统(windows)
- Record-2-7
- [思路题] hdu 5288 OO’s Sequence
- Mathematica 基本数值运算与符号运算函数
- Record-2-8