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 ...
随机推荐
- db2疑难解决
http://www-01.ibm.com/support/knowledgecenter/?lang=zh#!/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.d ...
- Unity四元素运用之风向标跟随箭头
using System.Collections; using System.Collections.Generic; using UnityEngine; public class WindVane ...
- Spring Mybatis PageHelper 设置使用
PageHelper是一个Mybatis的分页插件, 负责将已经写好的sql语句, 进行分页加工. 设置 现在使用的是PageHelper 5.0 版本 : 在build.gradle先引用jar包: ...
- Xor Sum
6498: Xor Sum 时间限制: 1 Sec 内存限制: 128 MB提交: 27 解决: 13[提交][状态][讨论版][命题人:admin] 题目描述 You are given a p ...
- epoch,iteration,batch,batch_size
epoch:训练时,所有训练图像通过网络训练一次(一次前向传播+一次后向传播):测试时,所有测试图像通过网络一次(一次前向传播).Caffe不用这个参数. batch_size:1个batch包含 ...
- Django 从0开始创建一个项目
title: Django 从0开始创建一个项目 tags: Django --- Django 从0开始创建一个项目 创建Django工程及配置 创建工程:django-admin starproj ...
- Java删除开头和末尾字符串
//扩展2个String方法 /* * 删除开头字符串 */ public static String trimstart(String inStr, String prefix) { if (inS ...
- java中插入myslq的datetime类型的
java.util.Date d = new java.util.Date(); Timestamp tt=new Timestamp(d.getTime()); ps.setTimestamp(4, ...
- Spring学习笔记之Spring概述
概述 Spring是一个java应用最广的开源框架,它是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...
- 解决升级mac os X EI Capitan后遇到LibclangError: dlopen(libclang.dylib, 6): image not found.的问题
打开文件./frameworks/cocos2d-x/tools/bindings-generator/clang/cindex.py 把第 3395 行 改为 : library = cdll.Lo ...