HDU-6069 Counting Divisors
来源:互联网 发布:换热器计算软件下载 编辑:程序博客网 时间:2024/06/05 07:34
2017 Multi-University Training Contest - Team 4 - 1003
HDU-6069 Counting Divisors
题意:
定义函数
求 i 从 l 到 r ,
思路:
将 i 质因数分解,
首先先打表筛出小于
代码:
#include <cstdio>#include <iostream>#include <cstring>#include <cmath>using namespace std;const int MAX = 1e6 + 10;const int mod = 998244353;int prime[MAX], g[MAX];long long f[MAX];int main(){ /// 素数筛 prime存的小于MAX的素数下标从1开始 prime0为素数个数 memset(prime, 0, sizeof(prime)); for(int i = 2; i < MAX; ++i) { if(!prime[i]) { prime[++prime[0]] = i; } for(int j = 1; j <= prime[0] && prime[j] < MAX / i; ++j) { prime[prime[j] * i] = 1; if(i % prime[j] == 0) { break; } } } int t; long long l, r, k, num; long long ans; scanf("%d", &t); while(t--) { scanf("%lld%lld%lld", &l, &r, &k); /// f保存l到r这个区间所有的数 g为因子个数 因为后面要用乘法所以初始化为1 for(int i = 0; i <= r - l; ++i) { f[i] = i + l; g[i] = 1; } /// 枚举小于sqrt(r)的所有素数 for(int i = 1; i <= prime[0]; ++i) { if(1LL * prime[i] * prime[i] > r) /// 当大于sqrt(r)时直接结束 { break; } /// 找到合适的素数开始分解 l/p*p 可以直接求出l到r中因子有p的最小值 long long j = l / prime[i] * prime[i]; j = j >= l ? j : j += prime[i]; for(; j <= r; j += prime[i]) { num = 0; while(f[j - l] % prime[i] == 0) { f[j - l] /= prime[i]; ++num; } g[j - l] = 1LL * g[j - l] * (num * k + 1) % mod; } } ans = 0; for(int i = 0; i <= r - l; ++i) { if(f[i] > 1) /// 处理l到r中的素数 { g[i] = 1LL * g[i] * (k + 1) % mod; } ans = (ans + g[i]) % mod; } cout << ans << endl; } return 0;}
阅读全文
0 0
- hdu 6069 Counting Divisors
- [HDU]6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu 6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu--6069--Counting Divisors
- HDU-6069 Counting Divisors
- HDU-6069 Counting Divisors
- HDU 6069 Counting Divisors
- hdu 6069Counting Divisors 数学
- hdu 6069 Counting Divisors(筛法)
- 【数论】hdu 6069 Counting Divisors
- Linux -- 第一部分 shell
- 程序员面试笔试宝典
- hdu 1846 基础巴什博奕
- spring中scope(作用越)理解
- spring boot 配置
- HDU-6069 Counting Divisors
- Spring-2 <p: >标签的使用
- java 内部类 局部类 细节
- objective C中的@class, SEL , IMP等灵活机制(五)
- 网络请求封装
- 多态
- hdu6097 Mindis 2017多校第六场1002 圆的反演
- 基于k8s部署的应用(服务)如何访问
- jquery滚动页面底部时ajax加载多次解决办法