HDU 5936 Difference ( 2016 CCPC 杭州 D && 折半枚举 )
题意 : 给出一个 x 和 k 问有多少个 y 使得 x = f(y, k) - y 、f(y, k) 为 y 中每个位的数的 k 次方之和、x ≥ 0
分析 :
f(y, k) - y = x ≥ 0
满足条件的 y 最多不超过 10 位
这个并不知道怎么证、网上有很多结论证明、仔细推敲过后发现都是错的
可能需要手动打表模拟一下吧......
变化一下式子
x = f(a, k) - a + f(b, k) - b * (1e5)
x - f(a, k) + a = f(b, k) - b * (1e5)
那么先处理出等式右边的 f(b,k) - b*(1e5)
这个的复杂度是大于但是不怎么大于 O(1e5 * 9)
然后再从 0 ~ 1e5 枚举 a 用二分查找出满足条件的数的个数
#include<bits/stdc++.h>
#define LL long long
using namespace std;
;
LL F[maxn][];
vector<LL> num;
LL x, k;
LL Qpow(LL a, int b)
{
LL ret = ;
while(b){
) ret = ret * a;
a = a * a;
b >>= ;
}return ret;
}
LL GetF(int i, int j)
{
LL ret = ;
while(i){
ret += Qpow((LL)(i%), j);
i /= ;
}return ret;
}
inline void init()
{
; i<=(int)1e5; i++)
; j<=; j++)
F[i][j] = GetF(i, j);
}
LL Solve()
{
num.clear();
; i<=(int)1e5; i++) num.push_back(F[i][k] - 1LL * i * (LL)1e5);
sort(num.begin(), num.end());
LL ret = ;
; i<=(int)1e5; i++)
ret += upper_bound(num.begin(), num.end(), x - F[i][k] + i) -
lower_bound(num.begin(), num.end(), x - F[i][k] + i);
);
}
int main(void)
{
init();
int nCase;
scanf("%d", &nCase);
; T<=nCase; T++){
scanf("%lld %lld", &x, &k);
printf("Case #%d: %lld\n", T, Solve());
}
;
}
HDU 5936 Difference ( 2016 CCPC 杭州 D && 折半枚举 )的更多相关文章
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
Difference Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 2016 ccpc 杭州 D.Difference hdu5936(折半枚举)
有坑!!!当x==0时,因为y>0,a,b不能同时为0,所以答案要-1 #include<iostream> #include<cstdlib> #include< ...
- HDU 5936 Difference(折半搜索(中途相遇法))
http://acm.hdu.edu.cn/showproblem.php?pid=5936 题意: 定义了这样一种算法,现在给出x和k的值,问有多少个y是符合条件的. 思路: y最多只有10位,再多 ...
- HDU 5984.Pocky(2016 CCPC 青岛 C)
Pocky Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decora ...
- HDU 5936 Difference
题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...
- 2016 CCPC 杭州站 小结
5题倒数第一,铜……(我就知道我们很稳!!!哼!! 这一次心态完全爆炸 开场我就没有按照平时的顺序读题 然后zr的A题wa 我F题T xl说B是一个最小生成树,又说是最小树形图,不会写 K题完全没思路 ...
- HDU 5918 SequenceI (2016 CCPC长春站 KMP模版变形)
这个题目的数据应该是比较弱的,赛场上的时候我们暴力也过了,而且我的kmp居然比暴力还要慢-- 这个变形并不难,跳着选数,把漏掉的位置补上就可以了. 代码如下: #include<iostream ...
- 2016 ccpc 杭州赛区的总结
毕竟是在杭电比的,和之前大连的icpc不同,杭电毕竟是隔壁学校,来回吃住全都是在自家寝室,方便! 不过说到方便也是有点不方便,室友都喜欢玩游戏,即使我昨晚9.30就睡觉了,仍然是凌晨一点才睡着,233 ...
- hdu 4715 Difference Between Primes (打表 枚举)
Difference Between Primes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
随机推荐
- C++ 继承 - 在派生类中对基类初始化
构造函数与基类的其他成员不同,不能被派生类继承,因此为了初始化基类中的成员变量,需要在派生类中调用基类的构造函数(即显式调用),如果派送类没有调用则默认调用基类的无参构造函数(即隐式调用). 显式调用 ...
- print() 默认是打印完字符串会自动添加一个换行符
可以使用end=" " 参数告诉 print() 用空格代替换行 for i in range(1,10): ... print(i,end=' ') ... 1 2 3 4 5 ...
- Django-djangorestframework-响应模块
响应模块 一般都用 Response 对象来做返回(最后一定是打包成符合 HTTP 协议的数据格式来传输,Response 类做了一系列处理,所以这里我们只需要关注下它的那些参数即可) 响应类构造器 ...
- python--基本语法与变量
python基本语法与变量 python语句的缩进 Python代码块使用缩进对齐表示代码逻辑,Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量.建议在代 ...
- k8s-traefik默认80端口
vim traefik.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: traefik-ingress-con ...
- 解决python在cmd运行时导入包失败,出现错误信息 "ModuleNotFoundError: No module named ***"
1.下图为我的自动化测试工程结构图 我通过运行run.bat批处理文件,调用cmd控制台运行start_run.py来开始我的自动化测试,但是出现如下错误: 大家可能知道我们的工程在IDE(Pycha ...
- k8s之helm入门
1.概述 helm是k8s的另外一个项目,相当于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像 ...
- k8s之自定义指标API部署prometheus
1.自定义指标-prometheus node_exporter是agent;PromQL相当于sql语句来查询数据; k8s-prometheus-adapter:prometheus是不能直接解析 ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- php 压缩接口
function rtnJson($obj) { if (!headers_sent() && // 如果页面头部信息还没有输出 extension_loaded("zlib ...