• 阶乘的精确值


    输入补超过1000的正整数n,输出n!=1*2*3....*n的精确结果..

    样例输入:30

    样例输出:265252859812191058636308480000000

     1 #include "stdafx.h"
     2 #include<iostream>
     3 #include<string>
     4 using namespace std;
     5 const int maxn=3000;
     6 int f[maxn];
     7 int _tmain(int argc, _TCHAR* argv[])
     8 {
     9     int i ,j,n;
    10     cin>>n;
    11     f[0]=1;
    12     for(int k = 1;k!=maxn;k++)
    13     {
    14         f[k]=0;
    15     }
    16     for(i= 2;i<=n;i++)
    17     {
    18         int c= 0;
    19         for(j = 0;j<maxn;j++)
    20         {
    21             int s =f[j]*i+c;
    22             f[j] = s%10;
    23             c=s/10;
    24         }
    25     }
    26     for(j= maxn-1;j>=0;j--)if(f[j]) break;
    27     for(i = j;i>=0;i--) cout<<f[i];
    28     
    29     return 0;
    30 }

     其实就是模拟手算的一个过程.将每次乘得的结果与n相乘.求出结果.个位留下.除以10得到进位.到高位上去...

  • 相关阅读:
    JavaScript之Math和date
    JavaScript之ES5和String
    JavaScript之数组
    JavaScript之 函数
    JavaScript之循环语句
    movies.js
    Js内存存放机制
    Web框架
    css中那些属性是可以继承的?
    赋值运算
  • 原文地址:https://www.cnblogs.com/crazycodehzp/p/3519560.html
Copyright © 2020-2023  润新知