📄 2-2-3.c
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <iostream.h>
#define MAXN 50
int gcd(int m,int n)
{
int temp;
if(n<m){
temp=n;n=m;m=temp;
}
while(m!=0){
temp=n%m;
n=m;
m=temp;
}
return n;
}
void formal(int *a){ //function 1
int p;
for (p = 1; p < a[0] || a[p] >= 10; p++) {
if (p >= a[0]) a[p+1] = 0;
a[p+1] += a[p]/10; a[p] = a[p] % 10;
}
if (p > a[0]) a[0] = p;
}
void combine (int a,int b,int *c){//function 2
int i, j, x, k;
int d[MAXN],u[MAXN];
for (k = 0, i = a; i >= a-b+1; i--) u[++k] = i;
u[0] = k;
for (i = 1; i <= b; i++) d[i] = i; /*将整数 1 至 b顺序存于数组 d */
for (i = 1; i <= u[0]; i++) /*从u的各元素中,去掉 d 中整数的所有因子*/
if (u[i] != 1)
for (j = 1; j <= b; j++)
if (d[j] != 1 ) {
x = gcd(u[i], d[j]); u[i] /= x; d[j] /= x;
}
c[0]=c[1]=1; /*长整数c初始化*/
for (i = 1; i<= u[0]; i++) /*将 u 中各整数相乘,存于长整数 c */
if (u[i] != 1){
for (j = 1;j <= c[0]; j++) c[j] = c[j]*u[i];
formal(c); /*将存于c中的长整数规整*/
}
}
main()
{ int c[MAXN],i;
combine(3,2,c);
printf("Result:");
for(i=c[0];i>0;i--)
printf("%d",c[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -