数组乘法(大整数相乘)

数组乘法(大整数相乘)

题目:Power of Cryptography

解法:https://blog.csdn.net/code_pang/article/details/8263971

题目类型:分治(大概吧,也不是很确定)

知识点:pow()函数的底层运算机制(因为这道题居然居然可以用一个函数就AC掉!!??),数字位数的确定,数组相乘法(即两个超大整数的相乘,只能用数组存储),二分查找法(节省时间,毕竟题目给的时间只有1秒!)

 

 

题目:牛课网上的https://www.nowcoder.com/acm/contest/75#question进击吧!阶乘

解法:大数乘法

#include <stdio.h>
#include <iostream>
using namespace std;

// 数组乘法, res_size: 表示有多少位, 返回结果的位数
int multiply(int x, int res[], int res_size) {
    int carry = 0;  // 进位
    for (int i=0; i<res_size; i++) {
        int prod = res[i] * x + carry;   //易错点1:记得加上carry进位值
        res[i] = prod % 10;
        carry  = prod/10;
        printf("carry = %d\n",carry);
    }

    while (carry!=0) {
        res[res_size] = carry%10;
        carry = carry/10;
        res_size++;
    }
    printf("res_size = %d\n",res_size);
    return res_size;
}

void factorial(int n) {
    int res[36000]; // 10000! 位数不超过36000

    // 初始化
    res[0] = 1;         //易错点2:数组的初始化的值应该为1
    int res_size = 1; // 表示有多少位

    // 计算 n!
    for (int x=2; x<=n; x++) {
        res_size = multiply(x, res, res_size);
    }

    for (int i=res_size-1; i>=0; i--) {
        printf("%d", res[i]);
    }
    cout << endl;
}
int main()
{
    ios::sync_with_stdio(false);

    long long N;
    while(cin >> N)
    {
            factorial(N);
    }
    return 0;
}

 

题目知识点:数组乘法

转载于:https://www.cnblogs.com/myxdashuaige/p/9153152.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101617.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm社区版与专业版区别_社区版和专业版区别

    pycharm社区版与专业版区别_社区版和专业版区别【时间】2018.09.22【题目】pyCharm专业版和社区版的区别以及如何查看其版本【参考链接】https://zhidao.baidu.com/question/584331885111670725.html一、pyCharm专业版和社区版的区别pycharm产品主页:https://www.jetbrains.com/pycharm/有说明1、专业版是收…

    2022年8月26日
    8
  • 亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理

    亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理供稿|亚信安全出品|CSDN云计算近日,《亚信安全2021年挖矿病毒专题报告》正式发布(以下简称《报告》)。《报告》以2021年亚信安全威胁情报与服务运营部门所监测、分析和处置的挖矿病毒事件为基础,对各类挖矿病毒和攻击进行分析梳理与情况总结,并且深度探究未来可能会演化的方向,以此帮助更多用户,以更安全、更高效、更全面的行动做出安全规划,为挖矿病毒治理提供了参考路径。2021年挖矿病毒大事件全面回顾2021全年,亚信安全共拦截挖矿病毒516,443次。《报告》基于此整体梳.

    2022年5月20日
    58
  • Http 和 Tcp 的区别

    Http 和 Tcp 的区别Http是包装数据的,Tcp是传输数据的。都是先Tcp建立连接,然后传输数据,如果没用http,对方无法识别你传输的数据是什么,所以需要http包装数据,其他应用层协议也可以。

    2022年9月2日
    6
  • 【python】Windows中编译安装libsamplerate和scikits.samplerate

    【python】Windows中编译安装libsamplerate和scikits.sampleratelibrosa缘由librosa是一个音频和音乐处理的Python包,我用它来做音频的特征提取。但是在使用时,发现librosa.load将音乐文件转化为时间序列的过程中,速度实在难以忍受,cpu跑的非常高,程序好像假死的状态。查阅官方文档发现,默认情况下,librosa会使用scipy.signal进行音频信号的重采样,这在实际使用时是很慢的。如果要获得很高的性能,官方建议安装libsampl

    2022年10月17日
    2
  • 深度理解Java中的static

    深度理解Java中的static目录一、static的用法:二、static的误区(问题思考)三、问题思考:一、static的用法:static可以用来修饰类的成员方法、类的成员变量、类中的内部类(以及用static修饰的内部类中的变量、方法、内部类),另外可以编写static代码块来优化程序性能。作用:方便在没有创建对象的情况下来进行调用(方法/变量)。被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。①修饰类的成员变量:static.

    2022年7月17日
    15
  • Jenkins(8)构建触发器之定时构建和轮询 SCM「建议收藏」

    Jenkins(8)构建触发器之定时构建和轮询 SCM「建议收藏」前言跑自动化用例每次用手工点击jenkins出发自动化用例太麻烦了,我们希望能每天固定时间跑,这样就不用管了,坐等收测试报告结果就行。jenkins的定时任务是用的crontab语法定时构建语法

    2022年7月31日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号