Spoj-ODDDIV Odd Numbers of Divisors
Given a positive odd integer K and two positive integers low and high, determine how many integers between low and high contain exactly K divisors.
Input
The first line of the input contains a positive integer C (0<C<100,000), the number of test cases to follow. Each case consists of a line containing three integers: K, low, and high (1<K<10000, 0<low≤ high<10^10). K will always be an odd integer.
Output
Output for each case consists of one line: the number of integers between low and high, inclusive, that contain exactly K divisors.
Example
Input:
3
3 2 49
9 1 100
5 55 235 Output:
4
2
1
询问一组(k,l,r),意思是在数字l到r之间有多少个数字有奇数个因子
显然如果对一个x质因数分解成(大π) pi^qi 那么总因子数是(大π) (qi+1)
因为它有奇数个因数,所以所有qi都是偶数,所以x应当是完全平方数!
因此,只要枚举x,而且l和r的范围从1e10将到1e5
把一个询问(k,l,r)差分成(k,1,r)-(k,1,l-1),就可以离线搞了
然后直接从1到10w枚举每个x,计算x^2有多少个因子,更新对于一个k,当前1~k已经记录了多少个完全平方数
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<deque>
#include<set>
#include<map>
#include<ctime>
#define LL long long
#define inf 0x7ffffff
#define pa pair<int,int>
#define pi 3.1415926535897932384626433832795028841971
using namespace std;
inline LL read()
{
LL x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
inline void write(LL a)
{
if (a<){printf("-");a=-a;}
if (a>=)write(a/);
putchar(a%+'');
}
inline void writeln(LL a){write(a);printf("\n");}
LL l,r,k,n;
int mx;
bool isprime[];
int sum[];
struct ask{int k,n,rnk;}q[];
bool operator <(ask a,ask b){return a.n<b.n;}
int cnt[];
int ans[];
inline void init()
{
memset(isprime,,sizeof(isprime));
for (int i=;i<=;i++)sum[i]=;
isprime[]=isprime[]=;
int k,l;
for (int i=;i<=;i++)
{
if (isprime[i])
{
sum[i]=;
for (int j=;i*j<=;j++)
{
isprime[i*j]=;k=;l=j;
while (l%i==){l/=i;k++;}
sum[i*j]*=*k+;
}
}
}
}
int main()
{
init();
n=read();
for (int i=;i<=n;i++)
{
int x=read(),y=ceil(sqrt(read())),z=floor(sqrt(read()));
mx=max(mx,z);
q[*i-].k=x;q[*i-].n=y-;q[*i-].rnk=-i;
q[*i].k=x;q[*i].n=z;q[*i].rnk=i;
}
sort(q+,q+*n+);
int now=;
for (int i=;i<=mx;i++)
{
cnt[sum[i]]++;
while (now<=*n&&q[now].n==i)
{
if (q[now].rnk>)ans[q[now].rnk]+=cnt[q[now].k];
else ans[-q[now].rnk]-=cnt[q[now].k];
now++;
}
}
for (int i=;i<=n;i++)printf("%d\n",ans[i]);
}
Spoj ODDDIV
Spoj-ODDDIV Odd Numbers of Divisors的更多相关文章
- Odd Numbers of Divisors
给出一个正奇数K,两个正整数low,high. 有多少整数属于[low, high],且包含K个因子. 数据 C(0 < C < 1e5),测试样例数. (1 < K < 10 ...
- SPOJ BALNUM - Balanced Numbers - [数位DP][状态压缩]
题目链接:http://www.spoj.com/problems/BALNUM/en/ Time limit: 0.123s Source limit: 50000B Memory limit: 1 ...
- SPOJ - BALNUM Balanced Numbers(数位dp+三进制状压)
Balanced Numbers Balanced numbers have been used by mathematicians for centuries. A positive integer ...
- SPOJ - BALNUM - Balanced Numbers(数位DP)
链接: https://vjudge.net/problem/SPOJ-BALNUM 题意: Balanced numbers have been used by mathematicians for ...
- SPOJ BALNUM Balanced Numbers (数位dp)
题目:http://www.spoj.com/problems/BALNUM/en/ 题意:找出区间[A, B]内所有奇数字出现次数为偶数,偶数字出现次数为计数的数的个数. 分析: 明显的数位dp题, ...
- SPOJ #429 Simple Numbers Conversion
This is simply a human work simulation - exactly reproducing how you do it by hand. Nothing special. ...
- spoj 10606 Balanced Numbers 数位dp
题目链接 一个数称为平衡数, 满足他各个数位里面的数, 奇数出现偶数次, 偶数出现奇数次, 求一个范围内的平衡数个数. 用三进制压缩, 一个数没有出现用0表示, 出现奇数次用1表示, 出现偶数次用2表 ...
- [创意标题] spoj 11354 Amusing numbers
意甲冠军: 给k(1<=k<=10^15),先询问k 大只包含数字5和6的数目是多少 实例 1那是,5 ,3那是,55 .4那是,56 思考: 首先,我们可以找到.有许多2这是头号,有两个 ...
- [数位dp] spoj 10738 Ra-One Numbers
题意:给定x.y.为[x,y]之间有多少个数的偶数位和减去奇数位和等于一. 个位是第一位. 样例: 10=1-0=1 所以10是这种数 思路:数位dp[i][sum][ok] i位和为sum 是否含有 ...
随机推荐
- Flask应用运行流程
当我们运行项目后,Flask内部都经历了什么 1.app.run()启动项目,ctrl点进源码 app.py: 1)执行了run_simple() 2)注意第三个参数,这里是Flask实例化的对象,在 ...
- codevs 1742 爬楼梯(水题日常)
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿很长,一次能跨过一或两阶.有一天,他 ...
- bzip2命令
bzip2命令——压缩文件 命令所在路径:/usr/bin/bzip2 示例1: # bzip2 yum.log 压缩当前目录下yum.log文件成yum.log.bz2 示例2: # bzip2 - ...
- openstack安装dashboard后访问horizon出错 End of script output before headers: django.wsgi
在配置文件中增加如下的一句解决问题 /etc/apache2/conf-available/openstack-dashboard.conf WSGIApplicationGroup %{GLOBAL ...
- 你是猴子请来的逗比么!IT跳槽大事件
3月招聘大战早已硝烟四起,互联网职场摇身一变成了跳蚤市场,猎头们告诉跳蚤们,跳不跳不是不问题,往哪儿跳才是重点,跳对了高薪期权都如过眼云烟.不过小编不得不说,劳资最痛恨那些跳槽的人啦!就因为加班 ...
- java读取clob字段的几种方法(转)
http://blog.csdn.net/tanksyg/article/details/49927897 第一种 Clob clob = rs.getClob("remark") ...
- objdump命令
0x00 objdump命令是Linux下的反汇编目标文件或者可执行文件的命令 0x01 objdump -f 显示test的文件头信息 $ objdump -f levellevel: file ...
- struts2的动态方法配置
动态方法调用配置 <package name="test" extends="struts-default"> <aciton name=&q ...
- ios 检查内存泄露
简介 在IPhone程式开发中,记忆体泄漏(内存泄漏)是个很容易发生的情况,因为IPhone必须自行作记忆体管理.现在的开发者,大多习惯用的.NET或Java的等有垃圾回收机制的开发语言来作开发,因此 ...
- 组件开发中的Controller View模式
“Controller View”模式: 组件嵌套中,最顶层的组件只管理State 子组件为纯组件 顶层组件分配State给子组件,作为子组件的props 子组件接受顶层组件发来的State作为自身的 ...