牛牛和牛妹在感叹现代科技日新月异的同时,也不忘关注着环保事业。 今天,牛牛和牛妹一同来到了戈壁滩种树,他们决定在同一排种下一共 棵小树,已知每棵小树的存活率相同,现在,牛牛和牛妹想要知道,在这 棵树中,恰好有 棵树存活时,最终这排小树形成的风景线会有多少种不同的情况。 由于最终答案可能很多,所以只需要输出对 取模后的结果。-笔试面试资料
这是qklbishe.com第5888 篇笔试面试资料
提供答案分析,通过本文《牛牛和牛妹在感叹现代科技日新月异的同时,也不忘关注着环保事业。
今天,牛牛和牛妹一同来到了戈壁滩种树,他们决定在同一排种下一共 棵小树,已知每棵小树的存活率相同,现在,牛牛和牛妹想要知道,在这 棵树中,恰好有 棵树存活时,最终这排小树形成的风景线会有多少种不同的情况。
由于最终答案可能很多,所以只需要输出对 取模后的结果。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
牛牛和牛妹在感叹现代科技日新月异的同时,也不忘关注着环保事业。
今天,牛牛和牛妹一同来到了戈壁滩种树,他们决定在同一排种下一共 棵小树,已知每棵小树的存活率相同,现在,牛牛和牛妹想要知道,在这
棵树中,恰好有
棵树存活时,最终这排小树形成的风景线会有多少种不同的情况。
由于最终答案可能很多,所以只需要输出对 取模后的结果。
#include <iostream> #define MAX 1000000007 using namespace std; long long calculate(int n, int k){ if (n < k || k < 0) return 0; int m_k = k; if(n < 2 * k) m_k = n - k; long long result = 1; for(int i = 0; i < m_k; i++){ result *= (n - i); if(result > MAX) result = result % MAX; } for(int i = 1; i < m_k; i++){ while(1){ if(result % (i+1) != 0) result += MAX; else{ result /= (i+1); break; } } } return result % MAX; } int main(){ int count = 0; int n = 0, k = 0; cin >> count; for( int i = 0; i < count; i++){ cin >> n >> k; cout << calculate(n, k) << "n"; } return 0; }
这个题应该是算排列组合,但问题是数量庞大,如果用递归,应该是时间不够用,然后改成循环,并且注意取模的问题。
分子边乘边取模,只要大于就取模
分母,因为原来排列组合的结果是可以除尽的,所以这里用个循环加模,来除尽。
这部分好像是数学的知识,密码学学过模相关,忘记了,后面再康康怎么搞,暂时取上面的算法吧。
2021-01-13 20:52:12 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com
区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站部分资料来自网络,侵权联系删除!资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛和牛妹在感叹现代科技日新月异的同时,也不忘关注着环保事业。 今天,牛牛和牛妹一同来到了戈壁滩种树,他们决定在同一排种下一共 棵小树,已知每棵小树的存活率相同,现在,牛牛和牛妹想要知道,在这 棵树中,恰好有 棵树存活时,最终这排小树形成的风景线会有多少种不同的情况。 由于最终答案可能很多,所以只需要输出对 取模后的结果。-笔试面试资料
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛和牛妹在感叹现代科技日新月异的同时,也不忘关注着环保事业。 今天,牛牛和牛妹一同来到了戈壁滩种树,他们决定在同一排种下一共 棵小树,已知每棵小树的存活率相同,现在,牛牛和牛妹想要知道,在这 棵树中,恰好有 棵树存活时,最终这排小树形成的风景线会有多少种不同的情况。 由于最终答案可能很多,所以只需要输出对 取模后的结果。-笔试面试资料