首先我们可以把答案差分,那么我们只需要求出\(1\)~\(x\)范围内的满足条件的数即可.

题目要求的应该是这个东西的个数:

\(l \leq a*b^c \leq r(1 \le a < b)​\)的个数

我们首先对于问题仔细分析一波,发现\(c>3\)显然不需要考虑.

  1. \(c>3\)且\(c\)是偶数.

显然\(a*b^{2k}=a*({b^k})^2\),显然如果\(a<b\)那么\(a<b^k(k>1)\)

  1. \(c>3\)且\(c\)是奇数.

显然\(a*b^{2k+1}=(a*b)*({b^k})^2\),显然如果\(a<b\)那么\(a<b^{k-1}(k>1)\)

所以现在我们成功把题目转换成了两种情况:\(c=2\)|\(c=3\)

单独计算\(c=2\)和\(c=3\)都十分的简单,但是极其有可能有这样子的情况:

\(a*x^2=b*y^3\)

这个时候我们就需要排除这种情况.

不妨先把\(a*x^2\)算出来,那么只需要计算满足\(b*y^3\)且\(a \ge x\)

\(a*x^2\)显然只需要枚举\(i \in [1,\sqrt[3]{x}]\)然后就是\(\sqrt{x/i}-i\),因为要排除掉\(a \ge x\)的情况.

现在问题就在于如何统计\(b*y^3 \leq x\)且\(a*x^2(a \ge x)\)

我们推一波式子:

下面是手写稿,主要是不想写\(LaTeX\)了.





/*
mail: mleautomaton@foxmail.com
author: MLEAutoMaton
This Code is made by MLEAutoMaton
*/
#include<bits/stdc++.h>
using namespace std;
const int M=430890,N=16820;
class SemiPerfectPower{
public:
vector<int>son[M],sum[N];
int mu[M],thr_out[M];
int pfg(long long x){
int l=0,r=3e8,ret=0;
while(l<=r){
int mid=(l+r)>>1;
if(1ll*mid*mid<=x){ret=mid;l=mid+1;}
else r=mid-1;
}
return ret;
}
int lfg(long long x){
int l=0,r=M,ret=0;
while(l<=r){
int mid=(l+r)>>1;
if(1ll*mid*mid*mid<=x){ret=mid;l=mid+1;}
else r=mid-1;
}
return ret;
}
long long solve(long long x){
long long ans=0;
for(int i=1;1ll*i*i*i<=x;i++)if(mu[i])ans+=pfg(x/i)-i;
for(int i=1;1ll*i*i*i*i<=x;i++)
if(!thr_out[i])
for(int j=1;j*j*j<=i;j++){
int d=__gcd(j*j,i);
if(!mu[i/d])continue;
int k=j*j/d,l=i/k,r=lfg(x/i)/k;
for(int u:son[i/d])ans+=mu[u]*(sum[u][r/u]-sum[u][l/u]);
}
return ans;
}
long long count(long long l,long long r){
mu[1]=1;
for(int i=1;i<M;i++)if(mu[i])for(int j=i<<1;j<M;j+=i)mu[j]-=mu[i];
for(int i=1;i<M;i++)if(mu[i])for(int j=i;j<M;j+=i)if(mu[j])son[j].push_back(i);
for(int i=2;i*i*i<M;i++)for(int j=i*i*i;j<M;j+=i*i*i)thr_out[j]=1;
for(int i=1;i<N;i++){
sum[i].resize(M/i+1);
sum[i][0]=0;
for(int j=1;j<M/i+1;j++)
sum[i][j]=sum[i][j-1]+(mu[i*j]!=0);
}
return solve(r)-solve(l-1);
}
};

TopCoder SRM 582 Div 1 - Problem 1000 SemiPerfectPower的更多相关文章

  1. TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E

    传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...

  2. TopCoder SRM 558 Div 1 - Problem 1000 SurroundingGame

    传送门:https://284914869.github.io/AEoj/558.html 题目简述  一个人在一个n * m棋盘上玩游戏,想要占领一个格子有两个方法: 在这个格子放一个棋子.  这个 ...

  3. TopCoder SRM 566 Div 1 - Problem 1000 FencingPenguins

    传送门:https://284914869.github.io/AEoj/566.html 题目简述: 平面上有中心在原点,一个点在(r,0)处的正n边形的n个顶点.平面上还有m个企鹅,每个企鹅有一个 ...

  4. TopCoder SRM 561 Div 1 - Problem 1000 Orienteering

    传送门:https://284914869.github.io/AEoj/561.html 题目简述: 题外话: 刚开始看题没看到|C|<=300.以为|C|^2能做,码了好久,但始终解决不了一 ...

  5. TopCoder SRM 559 Div 1 - Problem 900 CircusTents

    传送门:https://284914869.github.io/AEoj/559.html 题目简述: n个实心圆,两两没有交集,在第一个圆上找一个点,使得它到另外一个圆上某个点的最短距离的最小值尽量 ...

  6. TopCoder SRM 667 Div.2题解

    概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...

  7. TopCoder SRM 642 Div.2 1000 --二分+BFS

    题意: 给你一张图,N个点(0~N-1),m条边,国王要从0到N-1,国王携带一个值,当走到一条边权大于此值的边时,要么不走,要么提升该边的边权,提升k个单位花费k^2块钱,国王就带了B块钱,问能携带 ...

  8. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  9. Topcoder SRM 656 (Div.1) 250 RandomPancakeStack - 概率+记忆化搜索

    最近连续三次TC爆零了,,,我的心好痛. 不知怎么想的,这题把题意理解成,第一次选择j,第二次选择i后,只能从1~i-1.i+1~j找,其实还可以从j+1~n中找,只要没有被选中过就行... [题意] ...

随机推荐

  1. css 层叠 比较特殊性

    css 层叠: 多个相同的css声明(属性),应用到同一个元素上.当一个标签声明冲突时,浏览器会自动出发层叠机制 1:比较优先级 2:比较特殊性 3:比较源次序 依次经过上面的1,2,3的比较后,最终 ...

  2. python简单页面爬虫入门 BeautifulSoup实现

    本文可快速搭建爬虫环境,并实现简单页面解析 1.安装 python 下载地址:https://www.python.org/downloads/ 选择对应版本,常用版本有2.7.3.4 安装后,将安装 ...

  3. springboot学习入门简易版一---springboot2.0介绍

    1.1为什么用springboot(2) 传统项目,整合ssm或ssh,配置文件,jar冲突,整合麻烦.Tomcat容器加载web.xml配置内容 springboot完全采用注解化(使用注解方式启动 ...

  4. vue-cli脚手架——2.0版本项目案例

    一.[准备工作] Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/. Git 各平台安装包下载地址为:http://git-scm.com/dow ...

  5. c# 定制处理未处理异常

  6. Mongodb数据存储优缺点

    相对于Mysql来说 在项目设计的初期,我当时有了这样的想法,同时也是在满足下面几个条件的情况下来选择最终的nosql方案的: 1.需求变化频繁:开发要更加敏捷,开发成本和维护成本要更低,要能够快速地 ...

  7. excel转sql代码

    1. 首先一个标准的excel表格,如下: 2. 在同一行,后面一个单元格,英文输入法状态下输入以下:=CONCATENATE() =CONCATENATE("insert into tab ...

  8. 无法访问此网站 ERR_CONTENT_DECODING_FAILED

    这个错误挺少见的. 百度了下: 1,说是文件编码格式不正确: 2,说是Nginx的压缩和tomcat的压缩冲突了,关闭gzip压缩: 3,……………… 不管是哪一种情况,都是编码问题,所以逐一排查,根 ...

  9. JDBC_通过DriverManager获得数据库连接

    package day_18; import org.junit.Test; import java.io.InputStream; import java.sql.*; import java.sq ...

  10. Destoon二开必看执行流程

    <?php 代码首先包含common.inc.php文件 在common.inc.php文件中,首先定义常量. define('IN_DESTOON', true); define('IN_AD ...