数组乘法(大整数相乘)

数组乘法(大整数相乘)

题目: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C#调用Win32 api学习总结

    C#调用Win32 api学习总结从.NET平台调用Win32API    Win32API可以直接控制MicrosoftWindows的核心,因为API(ApplicationProgrammingInterface)本来就是微软留给我们直接控制Windows的接口。一.  基础知识    Win32API是C语言(注意,不是C++语言,尽管C语言是C++语言的子集)函数集。

    2022年10月11日
    4
  • phpstorm激活码2021到4月_通用破解码

    phpstorm激活码2021到4月_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    52
  • 一元线性回归方程公式_用普通最小二乘法估计经典线性模型

    一元线性回归方程公式_用普通最小二乘法估计经典线性模型概述别看公式多,其实很简单最小二乘法其实又叫最小平方法,是一种数据拟合的优化技术。实质上是利用最小误差的平方寻求数据的最佳匹配函数,利用最小二乘法可以便捷的求得未知的数据,起到预测的作用,并且是的这些预测的数据与实际数据之间的误差平方和达到最小。一般应用在曲线拟合的目的上。原理本篇文章不考虑其他方面的应用,我们用最简单的实例说明最小二乘法的工作原理与其内在含义。当我们在研究两个…

    2025年6月1日
    2
  • c语言strsep,C/C++ 字符串分割: strtok 与 strsep 函数说明(示例代码)

    c语言strsep,C/C++ 字符串分割: strtok 与 strsep 函数说明(示例代码)函数原型:char*strtok(char*s,constchar*delim);char*strsep(char**s,constchar*delim);功能:strtok和strsep两个函数的功能都是用来分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。返回值:从s开头开始的一个个子串,当没有分割的子串时返回NULL。相同点:两者都会改变源字符串,想要…

    2025年7月23日
    3
  • 电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办

    电脑开机读不到固态硬盘怎么办_电脑读不到固态硬盘怎么办电脑重启后发现电脑检测不出固态硬盘,这种情况大家不要慌张,下面就由学习啦小编跟大家分享电脑重启后读不到固态硬盘该怎么办,欢迎大家来阅读学习。电脑重启后读不到固态硬盘怎么办方法一1、首先进入BIOS后,选择“IDEHDDAutoDetection”项目,看是否可以检测到硬盘的存在,并核对型号是否一致,如果正常排除硬件问题,如果还不能找到硬盘,那么就是您的硬盘损坏或连接不正确。2、如果在bios…

    2025年11月19日
    8
  • 联合索引在B+Tree上的存储结构及数据查找方式[通俗易懂]

    联合索引在B+Tree上的存储结构及数据查找方式[通俗易懂]最困难的事情就是认识自己!个人网站,欢迎访问!前言:本篇文章主要是阐述下联合索引在B+Tree上的实际存储结构。本文主要讲解的内容有:联合索引在B+树上的存储结构联合索引的查找方式为什么会有最左前缀匹配原则在分享这篇文章之前,我在网上查了关于MySQL联合索引在B+树上的存储结构这个问题,翻阅了很多博客和技术文章,其中有几篇讲述的与事实相悖。具体如下:很多博客中都是说:联合索引在B+树上的非叶子节点中只会存储联合索引中的第一个索引字段的.

    2022年6月4日
    27

发表回复

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

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