MiCode 40: 找小“3”
题目链接
这道题真的是zjb恶心, 看其起来像是个数位dp, 然而我并不会数位dp.然后就xjb乱写了个雷类似于动态规划的玩意, 然后调出了\(9\times 9 = 81\)种Bug, 终于过了.
Description
给定一个奇数n,可得到一个由从1到n的所有奇数所组成的数列,求这一数列中数字3所出现的总次数。例如当n=3时,可得到奇数列:1,3,其中有一个数字3,故可得1
Solution
\(f_{i,0/1}\)表示当前位是或者不是3, 后面有i位的时候答案是多少.
这个东西可以转移出来, 我是直接记忆化搜索的.
然后就是怎么把\(n\)拆成若干个\(f_{i,0/1}\)的和,
这个东西比较复杂, 分成三种情况讨论,
- 当前位大于3
- 当前位小于3
- 当前位等于3
其中当前为等于3的情况是最难处理的, 所以数据中特意有一个\(30033\)
然后又因为stringstream(字符串转整数, 因为要求出n的一个后缀的大小) 的语法问题debug了好长时候.
当然细节是非常非常多的.
Code
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <sstream>
#include <iostream>
#include <algorithm>
long long f[15][2];
long long p10[15] = {
1, 5, 50, 500, 5000, 50000, 500000, 5000000, 50000000, 500000000, 50000000000ll
};
long long Get(int i, bool is) {
if (i < 1) return is;
if (f[i][is]) return f[i][is];
f[i][is] = 1ll * p10[i] * is + 9ll * Get(i - 1, 0) + Get(i - 1, 1);
return f[i][is];
}
long long Get(long long num) {
if (num >= 10 and num < 100) return num / 10;
int p = 1;
while (num > 2 * p10[p]) p += 1; p -= 1;
while (num >= 2 * p10[p]) num -= 2 * p10[p];
return num;
}
int main () {
long long n = 0, res = 0;
while(std:: cin >> n) {
std:: string str;
str = std:: to_string(n);
int siz = str.size() - 1;
res = 0;
int nn;
for (int i = 0; i < str.size(); i += 1) {
int p = i + 1;
std:: stringstream sstr;
std:: string sxs = str.substr(p, str.size() - p);
sstr.str(sxs); sstr >> nn;
if (str[i] > '3') res += (str[i] - '1') * Get(siz, 0) + Get(siz, 1);
else if (str[i] < '3') res += (str[i] - '0') * Get(siz, 0);
else res += 3 * Get(siz, 0) + (sxs.size() ? (nn / 2) + (nn % 2) : 1);
siz -= 1;
sstr.clear();
}
std:: cout << res << '\n';
}
return 0;
}
MiCode 40: 找小“3”的更多相关文章
- 小米oj 找小"3"(数位dp)
找小"3" 序号:#40难度:困难时间限制:1000ms内存限制:10M 描述 给定一个奇数n,可得到一个由从1到n的所有奇数所组成的数列,求这一数列中数字3所出现的总次数.例如 ...
- 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...
- 13、Cocos2dx 3.0游戏开发找小三之3.0中的Director :郝萌主,一统江湖
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中.我们具 ...
- 1、Cocos2dx 3.0游戏开发找小三之前言篇
尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...
- 3、Cocos2dx 3.0游戏开发找小三之搭建开发环境
尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27107295 搭建开发环境 使用 Cocos2d- ...
- 12、Cocos2dx 3.0游戏开发找小三之3.0中的生命周期分析
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我们执行了第 ...
- 牛客练习赛40 C 小A与欧拉路(树的直径)
链接:https://ac.nowcoder.com/acm/contest/369/C 题目描述 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边连接的两个点 ...
- 23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485919 春雨惊春清谷天,夏满芒夏暑相连, 秋处 ...
- 牛客练习赛40 A 小D的剧场 (思维dp)
链接:https://ac.nowcoder.com/acm/contest/369/A 题目描述 若你摘得小的星星 你将得到小的幸福 若你摘得大的星星 你将得到大的财富 若两者都能摘得 你将得到 ...
随机推荐
- [CQOI2012]交换棋子 网络流
---题面--- 题解: 一开始很快想出了一个接近正解的建图方法,但其实是错误的,不过还是骗了70分_(:зゝ∠)_ 首先我们可以观察到棋子有限,但费用多种,其实也就相当于限制了流量,找最小费用 对于 ...
- [NOI2009]管道取珠 DP + 递推
---题面--- 思路: 主要难点在思路的转化, 不能看见要求$\sum{a[i]^2}$就想着求a[i], 我们可以对其进行某种意义上的拆分,即a[i]实际上可以代表什么? 假设我们现在有两种取出某 ...
- 搭建openresty需要注意到的地方
openresty的完整包放在百度云盘linux目录下 一键安装openresty ./install.sh 安装好后,修改nginx.conf配置文件 cd /usr/local/openresty ...
- [解决]java.io.IOException: Cannot obtain block length for LocatedBlock
在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报 ...
- array_pop 剔除最后一个数组元素
<?php $a=array("red","green","blue"); print_r(array_pop($a)); //blu ...
- [Luogu 3701] 「伪模板」主席树
[Luogu 3701] 「伪模板」主席树 这是一道网络流,不是主席树,不是什么数据结构,而是网络流. 题目背景及描述都非常的暴力,以至于 Capella 在做此题的过程中不禁感到生命流逝. S 向 ...
- jsp03( javabeans)
1.javabean简介 Javabeans就是符合某种特定规范Java类.使用Javabeans的好处是[解决代码的重复编写],减少代码冗余,功能区分明确,提高代码的维护性. 2.javabean的 ...
- HDU 2546 饭卡 (dp)
题目链接 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上 ...
- jq_从右向右的滑入滑出效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js_layer弹窗的使用和总结
2018-04-10 一张呈现给用户的网页,会有很多种交互,比如连不上网络,用户点击按钮时向后台请求数据不成功等等.像这些情况,用户是看不见的, 要给用户更好的体验,在特定的时间,给客户反馈内容.实时 ...