Little Ruins is playing a number game, first he chooses two positive integers yy and KK and calculates f(y,K)f(y,K), here

f(y,K)=∑z in every digits of yzK(f(233,2)=22+32+32=22)f(y,K)=∑z in every digits of yzK(f(233,2)=22+32+32=22)

then he gets the result

x=f(y,K)−yx=f(y,K)−y

As Ruins is forgetful, a few seconds later, he only remembers KK, xx and forgets yy. please help him find how many yy satisfy x=f(y,K)−yx=f(y,K)−y.

InputFirst line contains an integer TT, which indicates the number of test cases.

Every test case contains one line with two integers xx, KK.

Limits 
1≤T≤1001≤T≤100 
0≤x≤1090≤x≤109 
1≤K≤91≤K≤9OutputFor every test case, you should output 'Case #x: y', where x indicates the case number and counts from 1 and y is the result.Sample Input

2
2 2
3 2

Sample Output

Case #1: 1
Case #2: 2

题意:给定函数f(y,K)=∑y的所有位的K次幂,给出X,K,问多少个Y满足f(Y,K)=X;

思路:似乎没有什么思路,考虑暴力,估计Y只有10位,所以我们暴力前面5位,用map去寻找后面5位。

然而我开始些了离散化WA了,map过了。

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
unordered_map<ll,int>mp;
ll tot,cnt,f[][],K,a[maxn],X,ans,num[maxn];
int main()
{
int T,Cas=;
scanf("%lld",&T); rep(i,,) f[i][]=;
rep(i,,) rep(j,,) f[i][j]=f[i][j-]*i;
while(T--){
tot=cnt=; mp.clear();
scanf("%lld%lld",&X,&K); ans=;
rep(i,,)
rep(j,,)
rep(k,,)
rep(p,,)
rep(q,,){
ll t1=f[i][K]+f[j][K]+f[k][K]+f[p][K]+f[q][K],t2=i*+j*+k*+p*+q;
a[++tot]=t1-100000LL*t2; mp[t1-t2]++;
if(t1-t2==X) ans++;
}
rep(i,,tot) if(mp.find(X-a[i])!=mp.end())ans+=mp[X-a[i]];
printf("Case #%d: %lld\n",++Cas,ans-(X==));
}
return ;
}

错误代码(依然没有找到bug):

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int Laxt[maxn],Next[maxn],tot,cnt,f[][],num[maxn]; ll a[maxn],To[maxn],X,ans,K;
int find(ll x){
ll t=(x%maxn+maxn)%maxn;
for(int i=Laxt[t];i;i=Next[i]) if(To[i]==x) return num[i];
return ;
}
void add(ll x){
if(x==X) ans++;
ll t=(x%maxn+maxn)%maxn;
for(int i=Laxt[t];i;i=Next[i]){
if(To[i]==x) { num[i]++; return ;}
}
Next[++cnt]=Laxt[t]; Laxt[t]=++cnt; To[cnt]=x; num[cnt]=;
}
int main()
{
int T,Cas=;
scanf("%lld",&T); rep(i,,) f[i][]=;
rep(i,,) rep(j,,) f[i][j]=f[i][j-]*i;
while(T--){
memset(Laxt,,sizeof(Laxt));
tot=cnt=;
scanf("%lld%lld",&X,&K); ans=;
rep(i,,)
rep(j,,)
rep(k,,)
rep(p,,)
rep(q,,){
ll t1=f[i][K]+f[j][K]+f[k][K]+f[p][K]+f[q][K],t2=i*+j*+k*+p*+q;
a[++tot]=t1-100000LL*t2; add(t1-t2);
}
rep(i,,tot) ans+=find(X-a[i]);
printf("Case #%d: %lld\n",++Cas,ans-(X==));
}
return ;
}

HDU - 5936: Difference(暴力:中途相遇法)的更多相关文章

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

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

  2. 【UVALive】2965 Jurassic Remains(中途相遇法)

    题目 传送门:QWQ 分析 太喵了~~~~~ 还有中途相遇法这种东西的. 嗯 以后可以优化一些暴力 详情左转蓝书P58 (但可能我OI生涯中都遇不到正解是这个的题把...... 代码 #include ...

  3. LA 2965 中途相遇法

    题目链接:https://vjudge.net/problem/UVALive-2965 题意: 有很多字符串(24),选出一些字符串,要求这些字符串的字母都是偶数次: 分析: 暴力2^24也很大了, ...

  4. 紫书 习题 8-16 UVa 1618 (中途相遇法)

    暴力n的四次方, 然而可以用中途相遇法的思想, 分左边两个数和右边两个数来判断, 最后合起来判断. 一边是n平方logn, 合起来是n平方logn(枚举n平方, 二分logn) (1)两种比较方式是相 ...

  5. 【uva 1152】4 Values Whose Sum is Zero(算法效率--中途相遇法+Hash或STL库)

    题意:给定4个N元素几个A,B,C,D,要求分别从中选取一个元素a,b,c,d使得a+b+c+d=0.问有多少种选法.(N≤4000,D≤2^28) 解法:首先我们从最直接最暴力的方法开始思考:四重循 ...

  6. HDU 5936 Difference

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

  7. uva 6757 Cup of Cowards(中途相遇法,貌似)

    uva 6757 Cup of CowardsCup of Cowards (CoC) is a role playing game that has 5 different characters (M ...

  8. LA 2965 Jurassic Remains (中途相遇法)

    Jurassic Remains Paleontologists in Siberia have recently found a number of fragments of Jurassic pe ...

  9. 【中途相遇法】【STL】BAPC2014 K Key to Knowledge (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  10. 高效算法——J 中途相遇法,求和

    ---恢复内容开始--- J - 中途相遇法 Time Limit:9000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Su ...

随机推荐

  1. Oracle数据安全(三)权限管理

    一.权限概述 所谓权限就是执行特定类型SQL命令或访问其他模式对象的权利.用户在数据库中可以执行什么样的操作,以及可以对哪些对象进行操作,完全取决于该用户所拥有的权限. 在Oracle中将权限分为系统 ...

  2. hadoop13---centos安装jdk

    由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创 ...

  3. Sybase:数据库检索的日期格式

    Sybase:数据库检索的日期格式 示例代码: --1,字符转日期 ' as date ),'yyyy/mm/dd'); ---结果:2018/03/09 --2,一年内第几天 ' as date ) ...

  4. centos7下apache+tomcat整合

    前提 在系统中已经安装好了jdk.tomcat.apache #本人博客中jdk安装连接 http://www.cnblogs.com/xhkj/p/6545111.html #本人博客中tomcat ...

  5. Hystrix工作流程图

  6. 用户iis可以用外网ip访问,用内网访问报错404

    如下,没有添加内网ip绑定

  7. Android -- 工程架构,电话拨号器, 点击事件的4中写法

    (该系列整理自张泽华android视频教程) 1. android工程 各个文件夹的作用 src/  java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动 ...

  8. Count and Say,统计并输出,利用递归,和斐波那契数列原理一样。

    问题描述:n=1,返回“1”:n=2,返回“11”:n=3,返回“21”:n=4,返回1211,.... 算法分析:和斐波那契数列道理差不多,都是后一个要依赖前一个元素.因此可以使用递归,也可以使用迭 ...

  9. Pandas缺失数据

    数据丢失(缺失)在现实生活中总是一个问题. 机器学习和数据挖掘等领域由于数据缺失导致的数据质量差,在模型预测的准确性上面临着严重的问题. 在这些领域,缺失值处理是使模型更加准确和有效的重点. 何时以及 ...

  10. python标准日志模块logging使用

    python的标准库里的日志系统从Python2.3开始支持.只要import logging这个模块即可使用.如果你想开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件,只要这样使用: ...