百度提前批笔试巨TM难,作为Acmer,我第一题竟然不会

有会第一题的给个思路
题目:
n个国家 ,每个国家5个人,大家排一列,要求,每个人旁边必须有同胞
求方案数 mod 1e9+7
n最大10万
输入n
输出方案数
case
in:1
out:120
in :3
out:736128000
全部评论
百度编程题题目太长了  看不懂啊。。。。。。
点赞 回复 分享
发布于 2017-09-04 10:52
public class Test { public static void main(String[] args) { for (int i = 1; i < 5; i++) { System.out.println(i+" "+f(i)); } } public static long f(int n) { // if (n == 1) // return 120; // long[] a = new long[n]; // for (int i = 1; i < a.length; i++) { // a[i] = x(i, n - 1); // } // long res = ((2 * n - 1) * (2 * n - 1) * 120 * f(n - 1)) % 1000000007; // for (int i = 1; i < a.length; i++) { // res = (res + a[i] * (4 * (n - 1) * i + i * i) * 120) % 1000000007; // } // return res % 1000000007; //不使用递归 long[] res=new long[n+1]; res[1]=120; for (int i = 2; i < res.length; i++) { //中间结果也需要模,i=4的时候这里就会出现负数 res[i]=(2 * i - 1) * (2 * i - 1) * 120 *res[i-1] % 1000000007; long[] a=new long[i]; for (int j = 1; j < a.length; j++) { a[j]=x(j,i-1); } for (int j = 1; j < a.length; j++) { res[i]=(res[i]+a[j]*(4 * (i - 1) * j + j * j) * 120) % 1000000007; } } return res[n] % 1000000007; } public static long x(int i, int n) { long res = (int) Math.pow(120, n); int k = 0; while (k < i) { res *= (n - k); k++; } int j = 0; while (j <= n - i - 1) { res *= (i + 2 * j + 1) * (i + 2 * j); j++; } return res; } }
点赞 回复 分享
发布于 2017-09-04 02:14
数学渣。。。也不会。。
点赞 回复 分享
发布于 2017-09-04 01:05
Q = C(5,2) * C(3,3) / A(2,2) * A(2,2) * A(3,3), 一只队伍分成2个和3个,且2个和3个之间是无序的,内部是排了序的。 n个国家,分成了2n个酱紫的单元。 Q ^ n * A(2n, 2n)! 酱紫不知道对不对?
点赞 回复 分享
发布于 2017-09-04 00:00
楼主,我看了下规律就是(5*n)的阶乘,可以验证
点赞 回复 分享
发布于 2017-09-02 23:31
跪了,没a一道
点赞 回复 分享
发布于 2017-09-02 22:50
同机器学习岗, 妈的简答题第二道一脸懵逼, 编程题1.2ac, 真是醉了
点赞 回复 分享
发布于 2017-09-02 22:41
我的全是简答题打了好多字
点赞 回复 分享
发布于 2017-09-02 22:13
这题真不会,说是编程题实际是排列组合题
点赞 回复 分享
发布于 2017-09-02 22:03
f(n,k)表示n个国家队伍里,有k个队伍是5个人排在一起的情况数 f(n+1,k)=f(n,k)*(2*n-k+1)*(2*n-k)*A(5,5)+f(n,k-1)*(2*n-k+2)*A(5,5) 反正我提交没过,不知道代码错在哪里。。。
点赞 回复 分享
发布于 2017-09-02 21:58
百度能搜出来
点赞 回复 分享
发布于 2017-09-02 21:48
完了完了,要跪了,我这是实习生转正不会把我刷了吧。。。。。
点赞 回复 分享
发布于 2017-09-02 21:39
已哭晕.....
点赞 回复 分享
发布于 2017-09-02 21:37
每次新来一个队伍,先内部排序,然后可以分为五个一起,前2后3,前3后2三种情况,然后第一种从已有的队列中找一个空,会使队列长度+1,后两种从已有队列中找两个空,会使队列长度+2。感觉思路没错啊,但算不出答案给的值。
点赞 回复 分享
发布于 2017-09-02 21:34
好像试卷都不太一样。。我都是简答题,程序设计也是简答题😂
点赞 回复 分享
发布于 2017-09-02 21:27
什么题目,第二题求有毒字符串的个数,什么做没思路
点赞 回复 分享
发布于 2017-09-02 21:27
没机会,做百度的试题,第一题是啥?
点赞 回复 分享
发布于 2017-09-02 21:26
第一题是啥?
点赞 回复 分享
发布于 2017-09-02 21:23
你的第一题是什么呀?
点赞 回复 分享
发布于 2017-09-02 21:22
直接return题中给的例子,通过20%
点赞 回复 分享
发布于 2017-09-02 21:21

相关推荐

05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务