获取阶乘n!的最后一个非零数字
2012-07-24 14:13
183 查看
#include <iostream> using namespace std; unsigned LastNotZeroDigit[1000]; long long Factorial[100]; unsigned CleanLastZeros(unsigned num); //清除数字后面的0 unsigned GetLastNotZeroDigit(unsigned num); //获取数字的最后一位非零数字 unsigned GetLastNotZeroDigitOfFactorial(unsigned n); //获取n!的最后一位非零数字 long long GetFactorial(unsigned n); //计算n! int main(int argc, char* argv[]) { for(unsigned i=0; i<20; i++) { cout<<i<<" "<<GetFactorial(i)<<" "<<GetLastNotZeroDigitOfFactorial(i)<<endl; } getchar(); return 0; } unsigned CleanLastZeros(unsigned num) { int tmpNum = num; for(int i=0; i<num; i++) { if(tmpNum%10 == 0) { tmpNum /= 10; } else { break; } } return tmpNum; } unsigned GetLastNotZeroDigit(unsigned num) { num = CleanLastZeros(num); num %= 10; return num; } unsigned GetLastNotZeroDigitOfFactorial(unsigned n) { if(n == 0) { LastNotZeroDigit[0] = 1; } else if(n == 1) { LastNotZeroDigit[1] = 1; } else { LastNotZeroDigit = GetLastNotZeroDigit(n * GetLastNotZeroDigitOfFactorial(n - 1) ); } return LastNotZeroDigit ; } long long GetFactorial(unsigned n) { if(n == 0) { Factorial[0] = 1; } else if(n == 1) { Factorial[1] = 1; } else { Factorial = n * GetFactorial(n - 1); } return Factorial ; }
相关文章推荐
- 杭电1066-N!的最后一个非零数字
- 找N!最后一个非零的数字
- (Relax 数论1.27)POJ 1150 The Last Non-zero Digit(求p(n,m)的最后一个非零数字)
- 求阶乘的最右一位非零数字
- javascript 获取字符串中的最后一个数字串
- .NET显示IP时最后一个数字显示*
- 获取字符串最后一个。
- Hadoop之——MapReduce实现从海量数字信息中获取最大值
- awk命令的使用(三)获取数组的最后一个元素
- c# 获取字符串中的数字
- 【三水哥】HTML中数字输入框内输入字母或者特殊符号,获取输入框内的值为""
- 【shell】用sed获取最后一个字符
- 获取字符串中的数字
- Java 将获取的阿拉伯数字转换成对应的中文
- Java 获取String中的数字:获取最后一串数字字符串
- perl 获取文件内容里第一个AAA和最后一个AAA
- iOS 判断输入框内容是否为数字,并判断输入首位内容是否为0,时时获取输入的新内容
- php结合正则获取字符串中数字
- javascript实现按数字键1获取img图片的焦点,按回车键刷新图片
- 获取路径的最后一个文件名lastPathComponent