阶乘统计0个数 算法
2016-01-24 17:18
288 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> void calculate(int a[] , const int num ); //计算每一步的阶乘 int len = 1; int main(void) { int *a; int n = 0; while(n>10000 ||n < 1000) { printf("please input number n between 1000 and 10000: "); scanf("%d",&n); } a = (int *)malloc(sizeof(int)*n*4); if(a == NULL) { exit(-1); } memset(a,0,n); a[0] = 1 ; for(int i = 1 ; i <= n ; i++) //通过数组计算n! { calculate(a , i ) ; } int count = 0; while(a[count] == 0) { count++; }//统计个数零 printf("the result is : %d\n",count); return 0; } void calculate(int a[] , const int num ) { int result = 0; // 乘积结果 int remainder = 0 ; // 余数 int carry = 0; // 进位 for(int i = 0 ; i < len ; ++i) { result = a[i]*num + carry; a[i] = result%10; carry = result/10; } if(carry!=0) //如果进位不为零,从低位到高位依次存储 { while(carry/10 != 0) { a[len] = carry%10; carry = carry/10; len++; } a[len++] = carry; } }
相关文章推荐
- JavaEE Tutorials (18) - Java EE平台安全介绍
- cocos2d-x 3.2 之 2048 —— 第一篇
- 红帽 Red Hat Linux相关产品iso镜像下载
- nvidia显卡在Linux中安装
- CSS 布局 问题 及 解答
- 求数列的最大字段和 算法
- JavaEE Tutorials (17) - Java消息服务示例
- memset函数使用详解
- linux下find指令的用法
- 棋盘覆盖问题 算法
- 2015年创意秀
- 21.2 关于动态链接库的其他话题
- 用zepto显示类似微信上下翻页的实现代码
- JavaEE Tutorials (16) - Java消息服务概念
- 1-24
- 让项目拥有变化的能力——依赖倒置原则
- hdu 5612Baby Ming and Matrix games(dfs)
- 蜜蜂问题 1 算法
- 1.Getting Started with ASP.NET MVC 5
- C#中TransactionScope的使用方法和原理