ZOJ 3224
来源:互联网 发布:凡科网站seo 编辑:程序博客网 时间:2024/06/04 01:38
题意是给定一个区间和一个长度为n的序列a。定义一个数x的对y的要求值为
虽然区间的范围可能很大,但是序列a划分的区间却只有log个,很容易从这方面想到对区间进行划分。我们再考虑对于每一个数,如果这个数有效,则它必须能够整除对于所有的
#include <bits/stdc++.h>using namespace std;int n;long long A,B;struct Segment{ long long l, r; int val; Segment(){} Segment(long long l,long long r, int val):l(l),r(r), val(val){}};const int maxn = 500 + 10;vector<Segment> s[maxn], v[maxn];int a[maxn];long long gcd(long long a, long long b) { return a == 0 ? b : gcd(b%a, a);}typedef pair<long long, int> pii;long long q[maxn];int main(){ ios::sync_with_stdio(0); while(cin >> n >> A >> B) { for(int i = 1; i <= n; ++i) s[i].clear(), v[i].clear(); for(int i = 1; i <= n; ++i) { cin >> a[i]; long long tmp = 1; int cnt = 0; while(tmp <= B) { s[i].push_back(Segment(tmp, tmp*a[i]-1,cnt++)); tmp *= a[i]; } for(int j = 0; j < (int)s[i].size(); ++j) { Segment & res = s[i][j]; if(res.r < A || res.l > B) { continue; } v[i].push_back(Segment(max(A, res.l), min(B, res.r), res.val)); } } long long sum = 0; long long lcm = 1; vector<pii> right; int tot = 0; for(int i = 1; i <= n; ++i) { q[++tot] = v[i][0].val; for(int j = 0; j < (int)v[i].size(); ++j) { right.push_back(pii(v[i][j].r, i)); } } sort(right.begin(), right.end()); long long last = A; for(int i = 1; i <= n; ++i) { if(q[i] == 0) { lcm = 0; break; } lcm = q[i] * lcm / gcd(q[i], lcm); } for(int i = 0; i < (int)right.size();) { if(lcm){ sum += (right[i].first) / lcm - last / lcm; if(last % lcm == 0) sum++; } last = right[i].first+1; lcm = 1; while(i < (int)right.size() && right[i].first+1 == last){ q[right[i++].second]++; } for(int j = 1; j <= n; ++j) { if(q[j] == 0) { lcm = 0; break; } lcm = lcm * q[j] / gcd(lcm, q[j]); } } cout << sum << '\n'; } return 0;}
阅读全文
1 0
- ZOJ 3224
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- 学习:C#连接数据库
- BZOJ3003 差分+状压
- 图像库
- Mac 取消 launchpad图标 上的下载季度条命令
- Docker Machine 创建 Azure 虚拟主机
- ZOJ 3224
- 给你不一样的引导页
- Qt Designer一打开就无法工作的解决办法
- Another app is currently holding the yum lock; waiting for it to exit..
- pom文件依赖依赖一直报错?不妨试试这个神器
- win10开机启动项配置
- HDU 4282A very hard mathematic problem(二分)
- 关于CoordinatorLayout和ListView滑动冲突的解决
- PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings.处理方法