蓝桥杯中的阶乘(求1000的阶乘)

2023-11-17

首先这个题,它是求1000的阶乘,他最后的值太大了,以至于不能用int ,long long int 来求。那要怎求呢。那肯定是用最简单的数组来求鸭,用数组来代表它的每一个位。

#include <iostream>
#include<cstring>
using namespace std;
int a[4049];

首先先赋一个全局变量int a[4090],我主要是也不知道1000的阶乘有好大,然后我就值搞个4090,这么多,再怎么也够了吧;

int main()
{
int n,sum;
  cin>>n;
  memset(a,0,sizeof(a));
  a[0]=1;

然后就赋初值咯,除了a[0]赋1,其他都赋0;

for(int i=2;i<=n;i++)
  {
    int c=0;
    for(int j=0;j<4090;j++)
    {
      sum=a[j]*i+c;
      a[j]=sum%10;
      c=sum/10;
    }
  }

然后这一步也是最重要的一步,这个是用双重循环来求,然后其中的sum是来求每一位的值,则c是用来进位的,我们可以先举一个例子n=5,第一个sum就叫sum1吧,当i=2时,进入第二层循环j=0时,sum1=2;a[i]=2,c=0,因为c=0,然后其他数组a[1],a[2]等等都等于0,所以后面就不用算了还是全部都等于0,;然后就这样只要当sum大于10的时候c才大于0,然后下一个数就等于c,这就是进一位,然后依次求下去达到1000的阶乘。

  int l;
  for(l=4089;l>=0;l--)
  {
    if(a[l]!=0)
    break;
  }
  for(int j=l;j>=0;j--)
  {
    cout<<a[j];
  }

因为我存的数组很多,1000的阶乘的最后值不一有4090位,就用循环算出它在最大的一位在数组的哪里,最后在用倒序输出。

完整代码

#include <iostream>
#include<cstring>
using namespace std;
int a[4049];
int main()
{
  // 请在此输入您的代码
  int n,sum;
  cin>>n;
  memset(a,0,sizeof(a));
  a[0]=1;
  for(int i=2;i<=n;i++)
  {
    int c=0;
    for(int j=0;j<4090;j++)
    {
      sum=a[j]*i+c;
      a[j]=sum%10;
      c=sum/10;
    }
  }
  int l;
  for(l=4089;l>=0;l--)
  {
    if(a[l]!=0)
    break;
  }
  for(int j=l;j>=0;j--)
  {
    cout<<a[j];
  }
  return 0;
}

加油吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯中的阶乘(求1000的阶乘) 的相关文章

  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 条件类型定义

    如果我有一小段这样的代码 template
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • Unity3D - 将 UI 对象移动到屏幕中心,同时保持其父子关系

    我有一个 UI 图像 它的父级是 RectTransform 容器 该容器的父级是 UI 面板 而 UI 面板的父级是 Canvas 我希望能够将此 UI 图像移动到屏幕中心 即画布 同时保留父级层次结构 我的目标是将 UI 图像从中心动画
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何组合两个 lambda [重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中组合两个 lambda 表达式 https stackoverflow com questions 1717444 combining two lamba expressions in c
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内

随机推荐

  • 表格增删查改使用ajax请求后端数据并没有更新的问题

    1 如果使用的是vue 那么先检查你的表格有没有使用v model实现数据双向绑定 2 使用ajax请求 因为ajax默认使用的是异步请求 也就是客户端请求给服务端时 客户端不需要等待也可以做其他事情 这是我实现添加的代码 其中标框的asy
  • MySQL在线大表DDL操作

    MySQL在线大表DDL操作的方法 1 主从架构轮询修改 a 主库会话级别的记录binglog的参数关闭 b 500 502错误异常捕捉 c 检查备库的second behind master是否有延迟 d varchar有页分裂的情况 尽
  • 【linux 异常断电】进入了emergency mode解决办法

    系统异常断电关机 导致启动时进入了emergency mode 解决办法 1 查看日志或报错信息 查看日志 journalctl 按他的操作输入journalctl之后输入shift g到日志最后查看报错发现是xfs sda3有问题 发现
  • ES6关于函数详解

    设置默认值的方式 ES6 之前 不能直接为函数的参数指定默认值 只能采用变通的方法 ES6 允许为函数的参数设置默认值 即直接写在参数定义的后面 function log x y World console log x y log Hell
  • 基于SpringBoot的共享单车管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 采用HTML和Vue技术开发 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Ec
  • 《剑指Offer》62:圆圈中最后剩下的数字(约瑟夫环)

    题目 0 1 2 n 1这n个数字排成一个圆圈 从数字0开始 每次从这圆圈你删除第m个数字 求出这个圆圈里剩下的最后一个数字 例如 0 1 2 3 4这5个数字组成一个圆圈 从数字0开始每次删除第3个数字 则删除的前4个数字依次2 0 4
  • 踩了大坑:https 证书访问错乱

    文章目录 一 问题排查及解决 问题一 证书加载错乱 问题二 DNS 解析污染问题 问题三 浏览器校验问题 二 终极解决方法 2 1 可外网访问域名 2 2 只能内网访问域名 2 3 内网自动化配置 2 4 错误解决 一 问题排查及解决 今天
  • 用SpringBoot开发工商银行平台公众号及小程序埋名聚合支付(微信小程序支付)

    因为项目需求的原因 需要开发小程序支付 采取的支付流程是用工商银行 以下简称工行 的埋名聚合支付 接口 进行小程序支付开发 工行 开发指南业务申请 https open icbc com cn icbc apip docs intro ht
  • 阿里云配置MINIO图床

    阿里云 ECS服务器 CENTOS7系统部署MINIO图床 1 下载MINIO的二进制文件 注 阿里云ECS网速过慢 但可以接受 wget https dl minio io server minio release linux amd64
  • AES加密,128-192-256,方案一

    AES加密 直接粘贴代码 异常什么的自己要处理 做个总结记录 package com xiao aes util import java io UnsupportedEncodingException import java securit
  • jmeter压测报错socket closed解决方法

    socket closed 问题原因 在JMeter下 发送http 请求时 一般都是默认选择了use keepAlive 这个是连接协议 JMeter坑就在这里 默认勾选了这个 如果不勾选的话 也不会保存 但其配置JMeter prope
  • 6个Python代码简化方法

    ython开发代码简化除了采用规范化的编程规则之外 代码编写的逻辑性和对内置规则的掌握也对其有一定的影响 以下是Python3支持的用法 合理的利用可以极大的简化代码的书写复杂度 列表推导式 对于一组列表 如果想让其所有元素翻倍 很多人都会
  • A notion of time

    1 simulation kernel用sc time数据类型来跟踪仿真时间 指定delay和timeouts sc time是用一个64bit的无符号整型数来表示 SC SEC seconds 10 0 秒 SC MS milliseco
  • 接口测试:postman发送POST请求

    Postman发送POST请求 postman发送POST请求 示例 微信公众平台创建用户标签接口 业务操作如下 1 打开微信公众平台 微信扫码登录 2 打开微信开放文档 找到用户管理 用户标签管理的接口信息 3 打开postman 新建一
  • 谷歌Chrome浏览器安装插件Hackerbar

    谷歌Chrome浏览器安装插件Hackerbar 因为google浏览器的应用市场 https chrome google com webstore category extensions 在国内无法访问 所以无法在线安装插件 这里提供开发
  • 刷脸和无感支付是社会科学发展的产物和动力

    手机支付不应该多过 而且有自动与支付余额联机 刷手机才是赚钱的出路 对比来看 手机支付操作简单但基础好 有相当多用户加入的话 就没有任何风险了 自动与支付余额联机有效 而对于支付余额联机更有效 但比安全性较低 不利于用户操作 而对于与银行合
  • python打包whl文件

    应用场景 在python的使用过程中 当遇到通过pip无法安装包 可以通过去Python安装包大全中 whl包下载 下载 whl 包来安装解决问题 也可以在别处打包成 whl 文件 拷贝过来运行 介绍 whl 文件是以 wheel 格式保存
  • PySerial:Python串口通信库的详细介绍、安装及使用方法攻略

    PySerial Python串口通信库的详细介绍 安装及使用方法攻略 一 PySerial 简介 PySerial 是 Python 的一个串口通信库 支持不同平台下的串口操作 在 Python 应用中 使用 PySerial 可以非常方
  • 《Programming in Lua 3》读书笔记(七)

    Compilation Executioin and Errors Lua的assert函数 assert v mess 相当于C的断言 当v为nil或者false将触发错误 mess为发生错误时返回的信息 dofile函数不仅会加载chu
  • 蓝桥杯中的阶乘(求1000的阶乘)

    首先这个题 它是求1000的阶乘 他最后的值太大了 以至于不能用int long long int 来求 那要怎求呢 那肯定是用最简单的数组来求鸭 用数组来代表它的每一个位 include