• 阶乘计算 高精度


    基础练习 阶乘计算  
    时间限制:1.0s   内存限制:512.0MB
    问题描述
      输入一个正整数n,输出n!的值。
      其中n!=1*2*3*…*n
    算法描述
      n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数aA[0]表示a的个位,A[1]表示a的十位,依次类推。
      将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
      首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
    输入格式
      输入包含一个正整数nn<=1000。
    输出格式
      输出n!的准确值。
    样例输入
    10
    样例输出
    3628800
     1 #include<iostream>
     2 #include<string.h>
     3 using namespace std;
     4 
     5 int main(){
     6     int n,A[100000];
     7     cin>>n;
     8     memset(A,0,sizeof(A));
     9     A[0] = 1;
    10     int bit = 0;
    11     for(int i = 1;i <= n;i++){
    12         int tem = 0;
    13         for(int j = 0;j <= bit;j++){
    14            A[j] = A[j] * i + tem;
    15            if(j==bit){
    16                  if(A[j] >= 10) 
    17                    bit++;
    18            }
    19            if(A[j] >= 10){
    20                  tem = A[j] / 10;
    21                  A[j] = A[j] % 10;
    22            }
    23            else
    24               tem = 0;//易错 
    25            
    26         }    
    27     }
    28     for(int i = bit;i >= 0;i--){
    29         cout<<A[i];
    30     }
    31     cout<<endl;
    32     return 0;
    33 } 
    View Code

    要注意进位只为后一位产生的,要记得更新,不管是否大于9

  • 相关阅读:
    C#入门经典中的SelectionFont属性为null
    C#键盘事件处理
    C# TextBox中的Validating与Validated事件[转]
    System.Diagnostics.Process 执行.EXE
    USB HID usage table
    ADPCM编码和解码
    Load$$ execution region symbols
    Astyle编程语言格式化工具的说明
    RLE行程长度编码压缩算法
    Django文档阅读之执行原始SQL查询
  • 原文地址:https://www.cnblogs.com/chenzhiyuan/p/5171373.html
Copyright © 2020-2023  润新知