Codeforces 899D Shovel Sale
题目大意
给定正整数 $n$($2\le n\le 10^9$)。
考虑无序整数对 $(x, y)$($1\le x,y\le n, x\ne y$)。
求满足 「$x+y$ 结尾连续的 9 最多」的数对 $(x,y)$ 的个数。
例子:
$n=50$,$(49,50)$ 是一个满足条件的数对。
比赛时我的思路
首先注意到,「两个正整数的和」的结尾的连续的 9 一定不包含进位的贡献,也不产生进位。
首先考虑(数对的和的)结尾最多有几个连续的 9 。不难得出:
设 $n$ 的位数为 $k$ ,令 $x=5\times 10^{k-1}$ 。
若 $n\ge x$,则和的结尾最多有 $k$ 个连续的 9 。
若 $n=10^{k} - 1$,满足条件的数对有 $n - x$ 个,否则有 $n-x+1$ 个。
若 $n < x$ ,数对之和的第 $k$ 位一定小于 $9$,故结尾至多有 $k-1$ 个连续的 9 。
若 $k-1=0$,则为平凡情形。
考虑 $k\ge 2$ 的情形。
设 $n$ 的 第 $k$ 位上的数字为 $h(n)$,显然有 $h(n) > 0 $ 。
考虑数对 $(x,y)$($x>y$),设 $x$ 的第 $k$ 位上的数字为 $h(x)$ 。
将所有满足条件的数对 $(x,y)$ 分成下列若干类:
- $h(n)>h(x)=h(y)=0$
 - $h(n)>h(x) = h(y) > 0$
 - $h(n)>h(x) > h(y)>0$
 - $h(n)>h(x) > h(y)=0$
 - $h(n)=h(x) > h(y) > 0$
 - $h(n) = h(x) > h(y) = 0$
 - $h(n) = h(x)= h(y) $
 
在比赛中,我没考虑到上述第 7 种情况。
总结
本题的思维方式:分类。
实现技巧:
求一个正整数 $n$ 的位数可用 to_string(n).size() 。
Codeforces 899D Shovel Sale的更多相关文章
- Shovel Sale CodeForces - 899D (数位dp)
		
大意: n把铲子, 价格1,2,3,...n, 求有多少个二元组(x,y), 满足x+y末尾数字9的个数最多. 枚举最高位, 转化为从[1,n]中选出多少个二元组和为$x$, 枚举较小的数 若$n\g ...
 - 【Codeforces Round #452 (Div. 2) D】Shovel Sale
		
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让N乘2->a 然后看一下位数是多少. 假设有x位(x>=2) 则(0..(a%10-1) ) + (99..9)[x- ...
 - Codeforces899D Shovel Sale(思路)
		
http://codeforces.com/problemset/problem/899/D 还是得tag一下,以下代码只有G++ 14 6.4.0能过,其他都过不了不知为什么? 思路:先求出最多的9 ...
 - Codeforces Round #451 & Codeforces Round #452
		
Rounding Solution Proper Nutrition 枚举 Solution Phone Numbers 模拟 Solution Alarm Clock 贪心,好像不用线段树也可以,事 ...
 - CodeForces 34B Sale
		
Sale Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Status ...
 - Codeforces Gym 100513I I. Sale in GameStore 暴力
		
I. Sale in GameStore Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/p ...
 - Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】
		
A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
 - 【71.76%】【codeforces 732A】Buy a Shovel
		
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
 - CodeForces 732A Buy a Shovel (水题)
		
题意:你手中有10元的钱,还有一个r元的零钱,要买一个价格为k的物品,但是你要求不找零钱,求最少要买多少物品. 析:直接暴力,最多买10个物品就够了1-10. 代码如下: #pragma commen ...
 
随机推荐
- 晒一下MAC下终端颜色配置
			
效果图: ~/.vimrc 配置 filetype on set history=1000 set background=dark syntax on set autoindent set smart ...
 - 使用JPA + Eclipselink操作PostgreSQL数据库
			
首先确保您已经安装了PostgreSQL.您可以参考我这篇文章PostgreSQL扫盲教程. 使用Eclipse创建一个新的JPA project: Platform选择EclipseLink,作为J ...
 - 关于火狐浏览器在ubuntu和安卓手机上的同步
			
最近在ubuntu使用火狐浏览器,感觉还不错.我想着,如果在我的安卓手机上装一个火狐浏览器,我就可以在手机上查看电脑上所收藏的网站了.然后我就去安卓应用市场下载了最新版的火狐浏览器.令人奇怪的是,我在 ...
 - 字符编码:BSTR
			
typedef wchar_t WCHAR; typedef WCHAR OLECHAR; typedef OLECHAR __RPC_FAR *BSTR;;
 - OC和C++的区别
			
C++语言特点: 1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言: 2.可以使用抽象数据类型进行基于对象的编程: 3.可以使用多继承.多态进 ...
 - 安装ubuntu16.4后
			
美化及配置: http://www.fant0m.com/18.html 安装pip: $ wget https://bootstrap.pypa.io/get-pip.py $ python get ...
 - Artwork Gym - 101550A 离线并查集
			
题目:题目链接 思路:每个空白区域当作一个并查集,因为正着使用并查集分割的话dfs会爆栈,判断过于复杂也会导致超时,我们采用离线反向操作,先全部涂好,然后把黑格子逐步涂白,我们把每个空白区域当作一个并 ...
 - HDU:2767-Proving Equivalences(添边形成连通图)
			
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2767 Proving Equivalences Time Limit: 4000/2000 MS (Ja ...
 - HUD:2853-Assignment(KM算法+hash)
			
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2853 Assignment Time Limit: 2000/1000 MS (Java/Others) ...
 - POJ:2109-Power of Cryptography(关于double的误差)
			
Power of Cryptography Time Limit: 1000MS Memory Limit: 30000K Description Current work in cryptograp ...