牛牛在研究数字,他非常喜欢各数位之间数字差异小的数。所以他定义了一种“近亲数”,他规定一个正整数中如果最大数字<=最小数字*2,那么这个正整数数就叫做近亲数。 举个例子,1,9,11,968,874都是近亲数,10,625,407,33542都不是近亲数。 牛牛想知道闭区间[L,R]中共有多少个近亲数,你能告诉牛牛吗?-笔试面试资料
这是qklbishe.com第6523 篇笔试面试资料
提供答案分析,通过本文《牛牛在研究数字,他非常喜欢各数位之间数字差异小的数。所以他定义了一种“近亲数”,他规定一个正整数中如果最大数字<=最小数字*2,那么这个正整数数就叫做近亲数。 举个例子,1,9,11,968,874都是近亲数,10,625,407,33542都不是近亲数。 牛牛想知道闭区间[L,R]中共有多少个近亲数,你能告诉牛牛吗?-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
牛牛在研究数字,他非常喜欢各数位之间数字差异小的数。所以他定义了一种“近亲数”,他规定一个正整数中如果最大数字<=最小数字*2,那么这个正整数数就叫做近亲数。
举个例子,1,9,11,968,874都是近亲数,10,625,407,33542都不是近亲数。
牛牛想知道闭区间[L,R]中共有多少个近亲数,你能告诉牛牛吗?
数字不是很多,暴力打个表,然后二分。
#include <bits/stdc++.h> using namespace std; typedef long long ll; vector<ll> a; int const LIMIT = 1e8; void dfs(int l, int r, int sum) { if (sum > LIMIT) { return; } if (sum > 0) { a.emplace_back(sum); } for (int i = l; i <= r; i++) { dfs(l, r, sum * 10 + i); } } int main(void) { vector<pair<int, int>> p = { {1, 2}, {2, 4}, {3, 6}, {4, 8}, {5, 9} }; for (auto& x : p) { dfs(x.first, x.second, 0); } sort(a.begin(), a.end()); a.erase(unique(a.begin(), a.end()), a.end()); int t; cin >> t; while (t--) { int l, r; cin >> l >> r; int pos1 = lower_bound(a.begin(), a.end(), l) - a.begin(); int pos2 = upper_bound(a.begin(), a.end(), r) - a.begin(); cout << pos2 - pos1 << endl; } return 0; }
2021-02-06 20:28:18 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com
区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站部分资料来自网络,侵权联系删除!资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛在研究数字,他非常喜欢各数位之间数字差异小的数。所以他定义了一种“近亲数”,他规定一个正整数中如果最大数字<=最小数字*2,那么这个正整数数就叫做近亲数。 举个例子,1,9,11,968,874都是近亲数,10,625,407,33542都不是近亲数。 牛牛想知道闭区间[L,R]中共有多少个近亲数,你能告诉牛牛吗?-笔试面试资料
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛在研究数字,他非常喜欢各数位之间数字差异小的数。所以他定义了一种“近亲数”,他规定一个正整数中如果最大数字<=最小数字*2,那么这个正整数数就叫做近亲数。 举个例子,1,9,11,968,874都是近亲数,10,625,407,33542都不是近亲数。 牛牛想知道闭区间[L,R]中共有多少个近亲数,你能告诉牛牛吗?-笔试面试资料