【区间筛】2017多校训练四 HDU6069 Counting Divisors
http://acm.hdu.edu.cn/showproblem.php?pid=6069
【题意】
给定l,r,k,求
d(n)是n的因子个数
【思路】

【Accepted】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
using namespace std;
typedef long long ll;
const int maxn=1e6+;
const ll mod=;
ll l,r,k;
bool isprime[maxn];
int prime[maxn];
int cnt;
ll tot[maxn];
vector<int> s[maxn];
ll a[maxn];
void init()
{
memset(isprime,true,sizeof(isprime));
isprime[]=false;
for(int i=;i<maxn;i++)
{
if(isprime[i])
{
for(int k=*i;k<maxn;k+=i)
{
isprime[k]=false;
}
}
}
cnt=;
for(int i=;i<maxn;i++)
{
if(isprime[i])
{
prime[cnt++]=i;
}
}
}
ll fac(ll& num,ll p)
{
ll cou=;
while(num%p==)
{
cou++;
num/=p;
}
return cou;
} int main()
{
init();
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&l,&r,&k);
for(int i=;i<=r-l;i++)
{
a[i]=(ll)i+l;
tot[i]=;
}
for(int i=;i<cnt;i++)
{
if(prime[i]>r) break;
ll cou=l/(ll)prime[i];
if(l%(ll)prime[i]) cou++;
for(ll j=cou*(ll)prime[i];j<=r;j+=(ll)prime[i])
{
int num=(int)(j-l);
if(a[num]==) continue;
ll sum=fac(a[num],prime[i]);
tot[num]=tot[num]*((k*sum)%mod+)%mod;
}
}
ll ans;
if(l==) ans=;
else ans=;
for(int i=;i<=(int)(r-l);i++)
{
if(a[i]!=) tot[i]=tot[i]*(k+)%mod;
if(tot[i]!=)
ans=(ans+tot[i])%mod;
}
cout<<ans<<endl;
}
return ;
}
【区间筛】2017多校训练四 HDU6069 Counting Divisors的更多相关文章
- hdu6069 Counting Divisors 晒区间素数
/** 题目:hdu6069 Counting Divisors 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6069 题意:求[l,r]内所有数的k次方 ...
- 2017 Multi-University Training Contest - Team 4 hdu6069 Counting Divisors
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6069 题目: Counting Divisors Time Limit: 10000/5000 ...
- 2017 多校训练 1002 Balala Power!
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- 2017 多校训练 1006 Function
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- 「2017 Multi-University Training Contest 2」2017多校训练2
1001 Is Derek lying 题目链接 HDU6045 Is Derek lying? 给出两个人选择题的回答,问得分分别为x和y是否可能.(\(1\le N \le 80000,0\le ...
- 【链表】2017多校训练三 HDU 6058 Kanade's sum
acm.hdu.edu.cn/showproblem.php?pid=6058 [题意] 给定一个排列,计算 [思路] 计算排列A中每个数的贡献,即对于每个ai,计算有ni个区间满足ai是区间中的第k ...
- 【2017多校训练2+计算几何+板】HDU 6055 Regular polygon
http://acm.hdu.edu.cn/showproblem.php?pid=6055 [题意] 给定n个格点,问有多少个正多边形 [思路] 因为是格点,只可能是正方形 枚举正方形的对角线,因为 ...
- 「2017 Multi-University Training Contest 8」2017多校训练8
1009 I am your Father! (最小树形图-朱刘算法) 题目链接 HDU6141 I am your Father! 求有向图最大生成树,要求n的父节点尽量小. 我们将所有wi变为-w ...
- 「2017 Multi-University Training Contest 7」2017多校训练7
1002 Build a tree(递归) 题目链接 HDU6121 Build a tree 有一棵n个点的有根树,标号为0到n-1,i号点的父亲是\(\lfloor\frac{i-1}{k}\rf ...
随机推荐
- 机器学习概念之特征选择(Feature selection)之RFormula算法介绍
不多说,直接上干货! RFormula算法介绍: RFormula通过R模型公式来选择列.支持R操作中的部分操作,包括‘~’, ‘.’, ‘:’, ‘+’以及‘-‘,基本操作如下: 1. ~分隔目标和 ...
- spring mvc URL忽略大小写
@Configuration public class SpringWebConfig extends WebMvcConfigurationSupport { @Override public vo ...
- [转]Java中实现自定义的注解处理器
Java中实现自定义的注解处理器(Annotation Processor) 置顶2016年07月25日 19:42:49 阅读数:9877 在之前的<简单实现ButterKnife的注解功能& ...
- LN : leetcode 730 Count Different Palindromic Subsequences
lc 730 Count Different Palindromic Subsequences 730 Count Different Palindromic Subsequences Given a ...
- SQL Server 2008还原数据库的具体方法
俗话说“好记性不如烂笔头”,在相隔较长的时间段内,每次还原客户的数据库都记不清完全的步骤,为此mark一下. SQL Server 2008一般默认备份的文件格式是bak,即后缀名为.bak.bak文 ...
- Android里的 ART、JIT、AOT、Dalvik之间有什么关系?
ART.JIT.AOT.Dalvik之间有什么关系? JIT与Dalvik JIT是"Just In Time Compiler"的缩写,就是"即时编译技术", ...
- 应用-如何使不同的企业使用独自的数据源。使用ejb3.0+jboss6.2EAP+JPA
摘要: 如何使不同的企业使用独自的数据源.使用ejb3.0+jboss6.2EAP+JPA10C应用系统被多个企业同时使用,为了提供个性化服务,如何使不同的企业使用独自的 ...
- 为什么要使用spl_autoload_unregister
最近学习 laravel 源码,发现他的 autoload_real.php 里面有一段: spl_autoload_register(array('ComposerAutoloaderInit290 ...
- Python3简明教程(四)—— 流程控制之分支
我们通过 if-else 语句来做决定,来改变程序运行的流程. if语句 语法如下: if expression: do this 如果表达式 expression 的值为真(不为零的任何值都为真), ...
- 把txt格式数据制作成xml数据
txt格式数据: 代码: s1=""" <object> <name>{0}</name> <pose>Unspecifi ...