【数论】2015 Multi-University Training Contest 1 1001
2015-07-22 09:40
477 查看
假设一个区间【l,r】中有一个数 i对于所有的j<>i,都不存在 i mod j = 0 然后这个j就是我们需要的,然后现在是问在【1,n】的所有区间中符合要求的j一共多少个
题目是队友帮忙翻译的。。。英语渣真是苦恼啊(感谢litter rain)
然后我是水过的。。。
从左到右扫然后就能求出每个因子的最右位置,
从右到左扫然后就能求出每个因子的最左位置。
然后乘一下就好了,
至于求因子,根号n的暴力就好了。。。
题目是队友帮忙翻译的。。。英语渣真是苦恼啊(感谢litter rain)
然后我是水过的。。。
从左到右扫然后就能求出每个因子的最右位置,
从右到左扫然后就能求出每个因子的最左位置。
然后乘一下就好了,
至于求因子,根号n的暴力就好了。。。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algorithm> using namespace std; int lmax[100100],rmin[100100],l[100100],r[100100],a[100100]; int main() { freopen("test.in","r",stdin); freopen("test.out","w",stdout); int n; while (scanf("%d",&n)!=EOF) { int sum=0; for (int i=1;i<=10000;i++) { lmax[i]=0; rmin[i]=n+1; } for (int i=1;i<=n;i++) { scanf("%d",&a[i]); l[i]=1; r[i]=n; } for (int i=1;i<=n;i++) { for (int j=1;j<=sqrt(a[i]);j++) { if (a[i]%j==0) { l[i]=max(l[i],lmax[j]+1); l[i]=max(l[i],lmax[a[i]/j]+1); } } lmax[a[i]]=i; } for (int i=n;i>0;i--) { for (int j=1;j<=sqrt(a[i]);j++) { if (a[i]%j==0) { r[i]=min(r[i],rmin[j]-1); r[i]=min(r[i],rmin[a[i]/j]-1); } } rmin[a[i]]=i; } for (int i=1;i<=n;i++) sum=(sum+(i-l[i]+1)*(r[i]-i+1))%(1000000007); printf("%d\n",sum); } return 0; }第一次打多校果然被虐成狗。。。
相关文章推荐
- hdu 5291 Candy Distribution 2015 Multi-University Training Contest 1
- grails domain创建相关问题
- 深入解析alloc/retain/release/dealloc实现
- hdu1151 二分图(无回路有向图)的最小路径覆盖 Air Raid
- ubuntu 10.10 drcom成功上网 好不容易。附:_recv_dialog_packet(PKT_CHALLENGE) failed解决之道
- URL validation failed. The error could have been caused through the use of the browser's navigation
- bailian.openjudge.cn2705
- VT.Essay.1:Try again. Fail again. Fail better.
- Russell's Paradox: Here's Why Maths Can't Have A Set Of Everything
- HDU 5289 Assignment (2015 Multi-University Training Contest 1)
- HDU5294 Tricks Device(最大流+SPFA) 2015 Multi-University Training Contest 1
- Copy,mutableCopy和retain的区别的小理解
- 2015 Multi-University Training Contest 1 题解 BY FZUw
- service是否在main thread中执行, service里面是否能执行耗时的操作?
- MFC学习笔记.day01-WINMAIN,MSG,WNDCLASS,ID-HANDLE-HWND,图标光标
- hdu 2473 Junk-Mail Filter(并查集(虚拟父节点))
- 2015 Multi-University Training Contest 1 Assignment
- SDNU 1143.Ivan comes again!【山东省第一届ACM】【7月21】
- A + B for you again(KMP)
- Cloudera Manager 安装时出现socker gaierror[error -2] name or service not know 或者could not contact scm ser