南湾单身码农平均一年能存多少钱?

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
高效直聘+内推,70%面试率
AI帮你免费完善简历
直击全美十万个科技职位
把贵司招聘信息放这里
查看: 292|回复: 3
收起左侧

[算法题] 跪求大神来帮忙分析一下这道题~

[复制链接] |试试Instant~
我的人缘0
想远眺的金蓝鸟 发表于 2018-7-11 15:21:02 | 显示全部楼层 |阅读模式
本楼: 【顶】   50% (1)
 
 
50% (1)   【踩】
全局: 顶  94% (64)
 
 
5% (4)  踩

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
今天做OA遇到一道容斥原理题目,但无奈自己太渣实在不会做,跪求大神来帮忙分析一下怎么解决该题~怕以后遇到类似的题目不会做怎么办!
跪谢!!

题目:
幸运数字
Lucky Number

If a number has 6 or 8, this number is a lucky number. But if a number has 6 and also has 8, it is not a lucky number.
e.g.: 16, 26, 18 are lucky number, but 168,68, 668 are not.

Write to count how many lucky numbers in given range.

Input: L, H

0 <=L <= H <= 2^62;

Output : number

TestCase:
Input1:     1, 10
Input2:     58,       72
Input3:     361087,        773904

Time : less than 1 second

上一篇:商科狗刷题记录
下一篇:LEETCODE 挂了吗?
我的人缘1
肥宅快乐水 发表于 2018-7-13 12:33:43 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
100% (1)   【踩】
全局: 顶  79% (665)
 
 
20% (168)  踩
这题我想错了,昨天研究一天没研究明白。 大概说一下思路吧。

首先是我的回答, 这个和你的问题并不相似, 而且我的答案也不能满足223,实际上还是把所有的数字都走了一遍, 非常的慢。怎么硕呢, 非常的没有牌面了。

回来说你的这个题, 先分析一下。已知 0 <=L <= H <= 2^62, 这也就是说 run time < O[n]。 如果是O[n] 的话肯定是不能满足 <1s 。也就是说target在O[1], O[lgn], O[sqrtN] 这几个选项中间。

再说题目本身, 其实是对于所有在 [lo - hi]中间的数字, 找
1) 至少包含一个6的数字
2) 至少包含一个8的数字
3) 至少包含1个6且包含一个8的数字。

前两问可以解, 代码如下

```
        long nodigit0(long cap, int dig)
        {
                long sum = 1, k = 0, cap2 = cap;
                while(cap > 0)
                {
                        long d = cap % 10;
                        cap /= 10;
                        if(d == dig) sum = 0;
                        if(d > dig) d--;
                        sum += (long) Math.pow(9, k) * d;
                        k++;
                }
                return cap2 - sum;
        }
```

简单解释一下代码, 是在数cap里面有多少个数不包括digit。 举例, 59633 里面有多少个数不包括6呢?这个数的方法是 59633 = 50000 + [5]9000 + [59]600 + [596]30 + [5963]3
显然 [5963]3 里面有0-3 共4个数, 所以sum  = 4
[596]30 里面有 [0-2] * 9 =27 个不包括6的数, 所以 sum = 31。这个是从59600到59629的数字, 不包括59630,以下同理。
[59]600 里面包括有[0-5]*9*9=486个数, 但是本位是6,6之后带的所有数字都有6,所以sum归零。 sum = 486
[5]9000 里面有[0-8]*9*9*9个数, 但是8>6, 所以拿掉6以后还剩[0-5,7,8]*9*9*9 个数 sum += 。。
50000 里面有[0-4]*9*9*9*9个数。 sum +=。。

接下来应该是数同时有6跟8的方法, 我一下想不到。。 感觉智商捉急了。

所以应该是个挺数学的题目。。
回复

使用道具 举报

全球28万学生4.7分推荐
我的人缘1
肥宅快乐水 发表于 2018-7-11 20:02:26 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  79% (665)
 
 
20% (168)  踩
233

会做这个就会数有6的, 有8的, 同理可得有68的。。

基本上数6 | 8的方法相当于是个10子树, 分别对应 root * 10 + 0-9。

数68的方法。。 依然是10子树。 只不过你往下接着找的时候带两个boolean就行了
回复

使用道具 举报

我的人缘0
Vicmal 发表于 2018-7-12 00:04:11 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  73% (115)
 
 
26% (41)  踩
数位dp就好
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地论坛声明

GMT+8, 2018-10-21 10:14

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表