枚举--hdu5936 difference
来源:互联网 发布:淘宝怎么打开我的店铺 编辑:程序博客网 时间:2024/05/17 23:33
then he gets the result
As Ruins is forgetful, a few seconds later, he only remembers
Every test case contains one line with two integers
Limits
//即求0 <= x <= 1e9时有多少个y满足x + y == f(y,k)
//1 <= k <= 9,f(y,k)min = f(y,1) < ..< f(y,i) < ... < f(y,k)max = f(y,9) f(y,k)关于k是递增函数
//y有1位时,可以知道y == f(y,1) < f(y,i) 此时x取0即可
//y有2位时,f(y,k)min < y < f(y,k)max,存在正整数x使得等式x + y == f(y,k)成立
//假设y有m位时不存在正整数x使等式成立,f(y,k)max < 10^(m - 1) <= y <= x + y
//即f(y,k)max <= m * 9^9 < 10 ^(m - 1)成立,m = 9时还不成立,m >= 10时不等式恒成立,不等式成立即y有10位时,不存在正整数x使得x + y == f(y,k)
//所以y最多有10位数字
//啊啊啊啊啊啊x==0的时候,y = 0也满足,要减掉1
#include <iostream>
#include <cstdio>
#include <cmath>
#include <map>
using namespacestd;
typedef longlong ll;
ll ak[10][10];//a的k次方
map<ll,ll> cnt[10];
void init_ak()
{
for (int i =0; i < 10; i ++) {
for (int j =1; j < 10; j ++) {
ak[i][j] =pow(i, j);
}
}
}
ll f(int y,int k)
{
ll sum =0;
while (y) {
sum += ak[y %10][k];
y /= 10;
}
return sum;
}
void init_y()
{
ll sum =0;
for (int k =1; k <= 9; k ++) {
for (int y =0; y < 1e5; y ++) {
sum = f(y, k);
cnt[k][sum -y * 1e5] ++;
}
}
}
int main()
{
init_ak();
init_y();
int T;
cin >> T;
for (int t =1; t <= T; t ++) {
int x,k;
scanf("%d%d",&x,&k);
ll ans =0,key = 0;
for (int i =0; i < 1e5; i ++) {
key = x - f(i,k) + i;//枚举y2
if(cnt[k].find(key) !=cnt[k].end()) {ans +=cnt[k][key];}
}
if(x ==0) ans --;
printf("Case #%d: %lld\n",t,ans);
}
return0;
}
- 枚举--hdu5936 difference
- HDU5936-Difference
- HDU5936折半枚举+思维
- HDU5936 Difference 【中途相遇法】
- Difference (hdu5936——2016ccpc杭州站D题)
- hdu5936二分
- POJ 2718 Smallest Difference 枚举
- POJ2718 Smallest Difference 【贪心+枚举】
- Smallest Difference (poj 2718 暴力枚举)
- Smallest Difference(Poj2718)(枚举全排列next_Permutation)
- poj 2718 Smallest Difference (STL 暴力枚举)
- POJ:2718 Smallest Difference(暴力枚举)
- 【POJ2718】Smallest Difference(枚举排列)
- POJ 2718 Smallest Difference(暴力枚举)
- Hdu 5936 Difference【思维+折半枚举+二分】
- HDU 5936 Difference(折半枚举)
- HDU 5936 Difference 折半枚举,暴力
- ccpc2016杭州D题HDU5936
- 攒货
- python 字典中的copy函数的浅拷贝问题
- java.lang.Object.clone()分析
- Python -- Html转PDF
- jquery获取表格中所有的checkbox并遍历
- 枚举--hdu5936 difference
- DropzoneJS 使用指南
- zabbix设置为中文
- Shader
- 以太坊基本概念及工具Geth、Browser-solidity、Mist
- 安装mysql5.7.19遇到启动mysql服务发生系统错误2
- 提高PHP编程效率的53个要点
- js 百度地图api
- WPF style 换肤