初级会员
  • 第 58267 位会员
  • ChampaignLiu
  • 刘善平
  • 2020-11-26 14:58:21
  • Offline
  • 19 92

最近发布的主题

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了主题 求解!!!
    贴一下思考的成果吧,遗憾阿,要是能在面试时候就做出来该多好!!! ```go package main import ( "fmt" "math/big" "os" "strconv" ) func main() { fmt.Printf("请输入步数:") var buffer [512]byte n, err := os.Stdin.Read(buffer[:]) if err != nil { fmt.Println(err) return } testNum, err := strconv.Atoi(string(buffer[:n-1])) if err != nil { fmt.Println(err) return } if testNum <= 0 || testNum%2 != 0 { fmt.Println("应该输入大于0的偶数") return } fmt.Println("最终结果:", combin(int64(testNum))) } func combin(num int64) (ret *big.Int) { bi := big.NewInt(num) bh := big.NewInt(num) bk := big.NewInt(num) bj := big.NewInt(num) ret = big.NewInt(0) for n := num / 10; n >= 0; n-- { if n > 0 { ret = bj.Add(ret, bk.Mul(big.NewInt(2), bi.Div(bi.MulRange(10*n+(num-10*n)/2+1, num), bh.MulRange(1, (num-10*n)/2)))) } else { ret = bj.Add(ret, bi.Div(bi.MulRange(10*n+(num-10*n)/2+1, num), bh.MulRange(1, (num-10*n)/2))) } } return } ```
  • 评论了主题 求解!!!
    还是举个例子吧:走8步,那就只能顺时针和逆时针各走4步,C(8,4)=70种; 走18步,可以顺逆各走9步,也可以顺14逆4,也可以顺4逆14,C(18,9)+C(18,14)+C(18,4)=54740; 走20步,可以顺逆各走10步,也可以顺15逆5,也可以顺5逆15,还可以顺0逆20,顺20逆0,C(20,10)+C(20,15)+C(20,5)+C(20,20)+C(20,20)=215766
  • 评论了主题 求解!!!
    后面每10个的取值范围类推
  • 评论了主题 求解!!!
    这道题因为是10个单位的环,所以n一定要是偶数才能满足要求,要是奇数个单位的环也可以这样做。那么N和M在这道题里怎么取值呢?首先N+M=n,要么N=M,要么N-M=10*(正整数),要么M-N=10*(正整数)。(这里隐含条件n应该是不为0的) 0<n<10,n=M+N,只能N=M,有C(2N,N)种排法; 10<=n<20,n=M+N;N=M时,有C(2N,N)种排法; N-M=10时,有C(N+M,N)种; M-N=10时,有C(N+M,M)种; 20<=n<30,n=M+N;N=M时,有C(2N,N)种排法; N-M=10时,有C(N+M,N)种; M-N=10时,有C(N+M,M)种; N-M=20时,有C(N+M,N)种; M-N=20时,有C(N+M,M)种;
  • 评论了主题 求解!!!
    自己解答一下:抽象化为另一种描述,有N个相同白球,M个相同黑球,排成一列,有多少种排列?这就是一道高中数学的组合问题,相当于从N+M个位置取N个位置放白球