题目链接

题意 : 给出一个 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 && 折半枚举 )的更多相关文章

  1. HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))

    Difference Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. 2016 ccpc 杭州 D.Difference hdu5936(折半枚举)

    有坑!!!当x==0时,因为y>0,a,b不能同时为0,所以答案要-1 #include<iostream> #include<cstdlib> #include< ...

  3. HDU 5936 Difference(折半搜索(中途相遇法))

    http://acm.hdu.edu.cn/showproblem.php?pid=5936 题意: 定义了这样一种算法,现在给出x和k的值,问有多少个y是符合条件的. 思路: y最多只有10位,再多 ...

  4. HDU 5984.Pocky(2016 CCPC 青岛 C)

    Pocky Let’s talking about something of eating a pocky. Here is a Decorer Pocky, with colorful decora ...

  5. HDU 5936 Difference

    题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...

  6. 2016 CCPC 杭州站 小结

    5题倒数第一,铜……(我就知道我们很稳!!!哼!! 这一次心态完全爆炸 开场我就没有按照平时的顺序读题 然后zr的A题wa 我F题T xl说B是一个最小生成树,又说是最小树形图,不会写 K题完全没思路 ...

  7. HDU 5918 SequenceI (2016 CCPC长春站 KMP模版变形)

    这个题目的数据应该是比较弱的,赛场上的时候我们暴力也过了,而且我的kmp居然比暴力还要慢-- 这个变形并不难,跳着选数,把漏掉的位置补上就可以了. 代码如下: #include<iostream ...

  8. 2016 ccpc 杭州赛区的总结

    毕竟是在杭电比的,和之前大连的icpc不同,杭电毕竟是隔壁学校,来回吃住全都是在自家寝室,方便! 不过说到方便也是有点不方便,室友都喜欢玩游戏,即使我昨晚9.30就睡觉了,仍然是凌晨一点才睡着,233 ...

  9. hdu 4715 Difference Between Primes (打表 枚举)

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

随机推荐

  1. C++ 继承 - 在派生类中对基类初始化

    构造函数与基类的其他成员不同,不能被派生类继承,因此为了初始化基类中的成员变量,需要在派生类中调用基类的构造函数(即显式调用),如果派送类没有调用则默认调用基类的无参构造函数(即隐式调用). 显式调用 ...

  2. print() 默认是打印完字符串会自动添加一个换行符

    可以使用end="  " 参数告诉 print() 用空格代替换行 for i in range(1,10): ... print(i,end=' ') ... 1 2 3 4 5 ...

  3. Django-djangorestframework-响应模块

    响应模块 一般都用 Response 对象来做返回(最后一定是打包成符合 HTTP 协议的数据格式来传输,Response 类做了一系列处理,所以这里我们只需要关注下它的那些参数即可) 响应类构造器 ...

  4. python--基本语法与变量

    python基本语法与变量 python语句的缩进 Python代码块使用缩进对齐表示代码逻辑,Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量.建议在代 ...

  5. k8s-traefik默认80端口

    vim traefik.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: traefik-ingress-con ...

  6. 解决python在cmd运行时导入包失败,出现错误信息 "ModuleNotFoundError: No module named ***"

    1.下图为我的自动化测试工程结构图 我通过运行run.bat批处理文件,调用cmd控制台运行start_run.py来开始我的自动化测试,但是出现如下错误: 大家可能知道我们的工程在IDE(Pycha ...

  7. k8s之helm入门

    1.概述 helm是k8s的另外一个项目,相当于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像 ...

  8. k8s之自定义指标API部署prometheus

    1.自定义指标-prometheus node_exporter是agent;PromQL相当于sql语句来查询数据; k8s-prometheus-adapter:prometheus是不能直接解析 ...

  9. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire

    创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...

  10. php 压缩接口

    function rtnJson($obj) { if (!headers_sent() && // 如果页面头部信息还没有输出 extension_loaded("zlib ...