zoukankan      html  css  js  c++  java
  • 求1977!

    #include <iostream>
    #include <cstdio>

    using namespace std;

    typedef long long LL;

    const int maxn = 100010;

    int num[maxn], len;

    /*
    在mult函数中,形参部分:len每次调用函数都会发生改变,n表示每次要乘以的数,最终返回的是结果的长度
    tip: 阶乘都是先求之前的(n-1)!来求n!
    初始化Init函数很重要,不要落下
    */

    void Init() {
    len = 1;
    num[0] = 1;
    }

    int mult(int num[], int len, int n) {
    LL tmp = 0;
    for(LL i = 0; i < len; ++i) {
    tmp = tmp + num[i] * n; //从最低位开始,等号右边的tmp表示当前位,左边的tmp表示进位(之前进的位)
    num[i] = tmp % 10; // 保存在对应的数组位置,即去掉进位后的一位数
    tmp = tmp / 10; // 取整用于再次循环,与n和下一个位置的乘积相加
    }
    while(tmp) { // 之后的进位处理
    num[len++] = tmp % 10;
    tmp = tmp / 10;
    }
    return len;
    }

    int main() {
    Init();
    int n;
    n = 1977; // 求的阶乘数
    for(int i = 2; i <= n; ++i) {
    len = mult(num, len, i);
    }
    for(int i = len - 1; i >= 0; --i)
    printf("%d",num[i]); // 从最高位依次输出,数据比较多采用printf输出
    printf(" ");
    return 0;
    }

  • 相关阅读:
    Lua metatable & metamethod
    lua 中的点、冒号与self
    Eclipse 快捷键
    logging的使用
    URL转义字符
    UnicodeEncodeError: ‘ascii’ codec can’t encode
    Baidu URL的部分参数
    使用JS伪造Post请求
    print 不换行
    exception keynote
  • 原文地址:https://www.cnblogs.com/--lr/p/6129408.html
Copyright © 2011-2022 走看看