c语言常用资料,C语言常用代码资料.doc

#include

using namespace std;

void fullxunhuan(int **a,int n)

{

int t=0;

int m1,m2;

if(n%2!=0)

{n++;}

for(int i=0;i

{

for(m1=i,m2=n-i-1;m1<=n-i-1;m1++)

{

a[m1][m2]=t%n+1;

t++;

}

for(--m1,--m2;m2>i;m2--)

{

a[m1][m2]=t%n+1;

t++;

}

for(;m1>i;m1--)

{

a[m1][m2]=t%n+1;

t++;

}

for(;m2

{

a[m1][m2]=t%n+1;

t++;

}

}

}

void print(int **a,int n)

{

for(int i=0;i

{

for(int j=0;j

{

cout<

}

cout<

}

}

void main()

{

int **a;

int n;

cout<

cin>>n;

a=new int *[n];//申请一个N行N列的数组

for(int i1=0;i1

{

a[i1]=new int[n];

}

for(int i=0;i

{

for(int j=0;j

{

a[i][j]=0;

}

}

fullxunhuan(a,n);

print(a,n);

}

ACM小组内部预定函数

数学问题:

1.精度计算——大数阶乘

2.精度计算——乘法(大数乘小数)

3.精度计算——乘法(大数乘大数)

4.精度计算——加法

5.精度计算——减法

6.任意进制转换

7.最大公约数、最小公倍数

8.组合序列

9.快速傅立叶变换(FFT)

10.Ronberg算法计算积分

11.行列式计算

12.求排列组合数

字符串处理:

1.字符串替换

2.字符串查找

3.字符串截取

计算几何:

1.叉乘法求任意多边形面积

2.求三角形面积

3.两矢量间角度

4.两点距离(2D、3D)

5.射向法判断点是否在多边形内部

6.判断点是否在线段上

7.判断两线段是否相交

8.判断线段与直线是否相交

9.点到线段最短距离

10.求两直线的交点

11.判断一个封闭图形是凹集还是凸集

12.Graham扫描法寻找凸包

数论:

1.x的二进制长度

2.返回x的二进制表示中从低到高的第i位

3.模取幂运算

4.求解模线性方程

5.求解模线性方程组(中国余数定理)

6.筛法素数产生器

7.判断一个数是否素数

图论:

1.Prim算法求最小生成树

2.Dijkstra算法求单源最短路径

3.Bellman-ford算法求单源最短路径

4.Floyd算法求每对节点间最短路径

排序/查找:

1.快速排序

2.希尔排序

3.选择法排序

4.二分查找

数据结构:

1.顺序队列

2.顺序栈

3.链表

4.链栈

5.二叉树

一、数学问题

1.精度计算——大数阶乘

语法:int result=factorial(int n);

参数:

n:n 的阶乘

返回值:阶乘结果的位数

注意:

本程序直接输出n!的结果,需要返回结果请保留long a[]

需要 math.h

源程序:

int factorial(int n)

{

long a[10000];

int i,j,l,c,m=0,w;

a[0]=1;

for(i=1;i<=n;i++)

{

c=0;

for(j=0;j<=m;j++)

{

a[j]=a[j]*i+c;

c=a[j]/10000;

a[j]=a[j]%10000;

}

if(c>0) {m++;a[m]=c;}

}

w=m*4+log10(a[m])+1;

printf("\n%ld",a[m]);

for(i=m-1;i>=0;i--) printf("%4.4ld",a[i]);

return w;

}

2.精度计算——乘法(大数乘小数)

语法:m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值