- 博客(3)
- 收藏
- 关注
原创 一种几乎不会溢出的组合数计算方式
之前我曾经在CSDN上看过一些人求组合数的代码,他们的方式大多数都是C(n,m)=A(n,m)/A(m,m),甚至有一些是C(n,m)=n!/(n!(n-m)!),然后用一些额外的检测来防止溢出。但是我发现了一种更合理的方式,在这里分享一下。思路:C(n,m)=C(n,m-1)*(n-m+1)/m代码:unsigned long long C(unsigned int y,unsigned int x){ if(x==0){ return 1; } if(x*2<=y){ int
2020-10-12 18:33:37
379
原创 象棋可能出现的摆法总数
C语言不支持大数,所以我用数组来模拟,导致整个程序很混乱,可读性很差。但是C语言中似乎没有什么更好的解决方式,我又不会别的语言,只能勉为其难了。#include<stdio.h>#include<math.h>#define KK for(k=0;k<9;++k)#define CARRY(a) for(k=0;k<8;++k){if(a[k]>99999){a[k+1]+=a[k]/100000;a[k]%=100000;}}#define FOR(i,
2020-05-18 16:45:04
344
空空如也
如何用循环改变变量名中的字母?
2023-05-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人