HDU - 4734 -- F(x)

news/2024/12/23 2:44:47/

题目如下:

For a decimal number x with n digits ( A n A n − 1 A n − 2 . . . A 2 A 1 ) (A_nA_{n-1}A_{n-2} ... A_2A_1) (AnAn1An2...A2A1), we define its weight as F ( x ) = A n ∗ 2 n − 1 + A n − 1 ∗ 2 n − 2 + . . . + A 2 ∗ 2 + A 1 ∗ 1. F(x) = A_n * 2^{n-1} + A_{n-1} * 2^{n-2} + ... + A_2 * 2 + A_1 * 1. F(x)=An2n1+An12n2+...+A22+A11. Now you are given two numbers A A A and B B B, please calculate how many numbers are there between 0 0 0 and B B B, inclusive, whose weight is no more than F ( A ) F(A) F(A).
Input
The first line has a number T ( T ≤ 10000 ) T (T \le 10000) T(T10000) , indicating the number of test cases.
For each test case, there are two numbers A A A and B B B ( 0 ≤ A , B < 1 0 9 ) (0 \le A,B < 10^9) (0A,B<109)
Output
For every case,you should output "Case #t: " at first, without quotes. The t is the case number starting from 1 1 1. Then output the answer.

Sample

Input

3
0 100
1 10
5 100

Output

Case #1: 1
Case #2: 2
Case #3: 13

思路 or 题解:

数位DP
dfs(数位, F(x) - 该位数的贡献,是否有限制)
具体请参考下面代码

AC 代码如下:

/*
Make it simple and keep self stupid
author:Joanh_Lan
*/
#pragma GCC optimize(3)
#pragma GCC optimize("inline") // 如果比赛允许开编译器优化的话,可以默写这两段
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <numeric>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <bitset>
#include <set>
#include <random>
#include <ctime>
#include <queue>
#include <stack>
#include <climits>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);
// #define int long long
#define ll long long
#define PII pair<int, int>
#define px first
#define py second
typedef std::mt19937 Random_mt19937;
Random_mt19937 rnd(time(0));
using namespace std;
const int mod = 1e9 + 7;
const int inf = 2147483647;
const int N = 100009;
//int Mod(int a,int mod){return (a%mod+mod)%mod;}
//int lowbit(int x){return x&-x;}//最低位1及其后面的0构成的数值
//int qmi(int a, int k, int p){int res = 1 % p;while (k){if (k & 1) res = Mod(res * a , p);a = Mod(a * a , p);k >>= 1;}return res;}
//int inv(int a,int mod){return qmi(a,mod-2,mod);}
//int lcm(int a,int b){return a*b/__gcd(a,b);}
int f[30][N], dig[30], idx;
int calc(int x)
{int ans = 0, t = 1;while (x)ans += x % 10 * t, t <<= 1, x /= 10;return ans;
}
int dfs(int pos, int s, bool lim)
{if (pos == -1)	return s >= 0;if (s < 0)return 0;if (!lim && f[pos][s] != -1)	return f[pos][s];int len = lim ? dig[pos] : 9;int ans = 0;for (int i = 0; i <= len; i++)ans += dfs(pos - 1, s - i * (1 << pos), lim && i == len);if (!lim)	f[pos][s] = ans;return ans;
}
void solve()
{int x, n;	cin >> x >> n;idx = 0;while (n)dig[idx++] = n % 10, n /= 10;cout << dfs(idx - 1, calc(x), 1) << '\n';
}
int main()
{buff;memset(f, -1, sizeof f);int _ = 1;cin >> _;for (int i = 1; i <= _; i++){cout << "Case #" << i << ": ";solve();}
}

http://www.ppmy.cn/news/124690.html

相关文章

4545

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Docker环境打包部署

Docker 最初只是为了解决一个环境打包问题

NC14745 Hungry!

题目描述 XzzF is in English class, His teacher told them a story&#xff1a; At noon the rush hour had passed. There were few guests in the snack bar. It was not crowded. When the boss was about to take a break to read a newspaper, in came an old lady and …

HDU-4745-Two Rabbits

HDU-4745-Two Rabbits 传送门 这一道题是区间dp.最长回文子序列。 题目大意&#xff1a;有两只兔子。一个只往顺时针方向跳。一个只往逆时针方向跳。这两只兔子每次跳的石头的重量必须相同。 所以很明显啦~有关于回文串的 当初思考的时候想把前面n-1个数直接放在n的后面。。…

si4745 FM-AM-SW 音量控制芯片 驱动详解

在论坛上看到有人发这个dsp 芯片&#xff0c;仔细看了下&#xff0c;发现功能正合我意&#xff0c;网上能找到的资料&#xff08;源码&#xff09;不多 软件环境&#xff1a;linux4.1.36 arm-linux-gcc 4.3.2 实现功能&#xff1a;自动搜台&#xff0c;上一台&#xff0c; 下一…

Acer4745G笔记本蓝牙驱动安装

Acer4745G笔记本装win7时已自动安装上了Atheros无线网卡驱动&#xff0c;并且能正常上网&#xff0c; 在此基础上想安装蓝牙驱动&#xff0c;用来连接一个蓝牙耳机。安装过程记录如下&#xff1a; 1、到Acer官网按笔记本型号下载Launch Manager并安装。 这个软件的作用是切…

时间基础概念及Linux中的时间函数

时间基础概念及Linux中的时间函数 时间相关概念GMT 时间UTC 时间时区 Time Zone夏令时 DST本地时间 localtime Linux 系统中的时间时钟基础概念系统节拍数 jiffiesLinux系统查看时间及配置时区获取时间函数获取 当前时间 time()获取 当前时间&#xff08;微秒&#xff09; gett…

如何快速图片压缩指定大小?图片压缩到200k以内的方法

图片压缩到200k以内的介绍 在现代社交媒体和网页设计中&#xff0c;高质量的图片是必不可少的。但是&#xff0c;大型图像文件可能会导致页面加载时间过长&#xff0c;从而影响用户体验。这时就需要使用图片压缩技术来将图片文件大小减小到合理的范围内。其中&#xff0c;将图…