P1009 [NOIP 1998 普及組] 階乘之和

題目描述

用高精度計算出?S=1!+2!+3!+?+n!(n≤50)。

其中?!?表示階乘,定義為?n!=n×(n?1)×(n?2)×?×1。例如,5!=5×4×3×2×1=120。

輸入格式

一個正整數?n。

輸出格式

一個正整數?S,表示計算結果。

輸入輸出樣例

輸入?

3

輸出?

9

說明/提示

【數據范圍】

對于?100%?的數據,1≤n≤50。

代碼

無注釋版

#include<bits/stdc++.h>
using namespace std;
const int m=110;
int a[110],b[110];
int main(){int n;cin>>n;a[0]=b[0]=1;for(int i=2;i<=n;i++){for(int j=0;j<m;j++){b[j]*=i;}for(int j=0;j<m;j++){if(b[j]>9){b[j+1]+=b[j]/10;b[j]%=10;}}for(int j=0;j<m;j++){a[j]+=b[j];if(a[j]>9){a[j+1]+=a[j]/10;a[j]%=10;}}}int k=m;for(k=m;k>0&&a[k]==0;k--);for(int i=k;i>=0;i--){cout<<a[i];}}

有注釋版

#include<bits/stdc++.h>
using namespace std;const int m = 110;  // 定義一個常量m,表示數組的大小,用于存儲結果int a[110], b[110];  // a數組用來存儲最終結果,b數組用來存儲每次計算階乘的結果int main(){b數組用來存儲每次計算階乘的結果int main(){int n;cin >> n;  // 輸入n,表示我們要求1! + 2! + ... + n!a[0] = b[0] = 1;  // 初始化a和b數組的第一個元素為1// 從2!開始計算,到n!for(int i = 2; i <= n; i++){// 計算i!,存儲到b數組中for(int j = 0; j < m; j++){b[j] *= i;}// 處理b數組中因乘法導致的進位for(int j = 0; j < m; j++){if(b[j] > 9){  // 如果b[j]大于9,說明需要進位b[j+1] += b[j] / 10;  // 將進位加到b[j+1]上b[j] %= 10;  // b[j]保留個位數}}// 將b數組的結果加到a數組中(加上當前階乘值)for(int j = 0; j < m; j++){a[j] += b[j];  // a[j] += b[j]表示累加每個階乘的結果if(a[j] > 9){  // 處理進位a[j+1] += a[j] / 10;  // 將進位加到a[j+1]上a[j] %= 10;  // a[j]保留個位數}}}// 找到a數組中有效數字的最后一個位置int k = m;for(k = m; k > 0 && a[k] == 0; k--);  // 從最后一個元素開始向前查找,找到第一個不為0的元素// 輸出結果for(int i = k; i >= 0; i--){cout << a[i];  // 從高位到低位輸出a數組的數字}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83811.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83811.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83811.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 的 os 庫常見使用方法(操作目錄及文件)

前言&#xff1a; os 模塊是 Python 標準庫中用于與操作系統交互的核心模塊&#xff0c;提供了許多操作文件和目錄的功能。以下是常見的使用方法&#xff1a; 1. 目錄操作 方法功能說明示例os.getcwd()獲取當前工作目錄print(os.getcwd())os.chdir(path)切換當前工作目錄os.ch…

vue3 el-table實現字段可編輯

在Vue 3中&#xff0c;如果你想讓el-table&#xff08;Element Plus的表格組件&#xff09;的字段可編輯&#xff0c;你可以通過以下方式來實現&#xff1a; 使用cell-mouse-enter和cell-mouse-leave事件動態顯示編輯圖標或控件 你可以在鼠標進入單元格時顯示一個編輯圖標或輸…

基于shardingsphere的分庫分表方案

一、準備docker容器 啟動兩個mysql的docker容器 docker run -v /root/mysql_volume/data:/var/lib/mysql -v /root/mysql_volume/conf:/etc/mysql/conf.d -v /root/mysql_volume/my.cnf:/etc/my.cnf -p 3306:3306 --name mysql --restartalways --privilegedtrue -e MYSQL_RO…

SearxNG本地搜索引擎

SearxNG 是一個強大、開源的 元搜索引擎(meta search engine),它不會存儲用戶信息,注重隱私保護,并支持從多個搜索引擎聚合結果,用戶可以自建部署,打造一個無廣告、可定制的搜索平臺。 ?? 什么是 SearxNG? SearxNG 是 Searx 的一個積極維護的分支(fork),意在改進…

Vue3.5 企業級管理系統實戰(十九):菜單管理

篇幅原因&#xff0c;本節先探討菜單管理頁面增刪改查相關功能&#xff0c;角色菜單&#xff0c;菜單權限&#xff0c;動態菜單等內容放在后面。 1 菜單 api 在 src/api/menu.ts 中添加菜單 api&#xff0c;代碼如下&#xff1a; //src/api/menu.ts import service from &qu…

【android bluetooth 協議分析 01】【HCI 層介紹 8】【ReadLocalVersionInformation命令介紹】

1. HCI_Read_Local_Version_Information 命令介紹 1. 功能&#xff08;Description&#xff09; HCI_Read_Local_Version_Information 命令用于讀取本地 Bluetooth Controller 的版本信息&#xff0c;包括 HCI 和 LMP 層的版本&#xff0c;以及廠商 ID 和子版本號。 這類信息用…

React底層架構深度解析:從虛擬DOM到Fiber的演進之路

一、虛擬DOM&#xff1a;性能優化的基石 1.1 核心工作原理 React通過JSX語法將組件轉換為輕量級JavaScript對象&#xff08;即虛擬DOM&#xff09;&#xff0c;而非直接操作真實DOM。這一過程由React.createElement()實現&#xff0c;其結構包含元素類型、屬性和子節點等信息&a…

從AlphaGo到ChatGPT:AI技術如何一步步改變世界?

從AlphaGo到ChatGPT&#xff1a;AI技術如何一步步改變世界&#xff1f; 這里給大家分享一個人工智能學習網站。點擊跳轉到網站。 https://www.captainbed.cn/ccc 前言 在科技發展的歷史長河中&#xff0c;人工智能&#xff08;AI&#xff09;技術無疑是最為璀璨的明珠之一。從…

關于在Unity項目中使用Post Processing插件打包到web端出現的問題

關于在Unity項目中使用Post Processing插件打包到web端出現的問題 解決方法&#xff1a;是不激活攝像機上的Post Processing有關組件&#xff0c;拉低場景中的Directional Light平行光的強度進行web端打包。 &#xff08;烘焙燈光時是可以激活。&#xff09; web端支持這個Pos…

MySQL - 如何突破單庫性能瓶頸

數據庫服務器硬件優化 我們來看看對數據庫所在的服務器是如何進行優化的&#xff0c;服務器是數據庫的宿主&#xff0c;其性能直接影響了數據庫的性能&#xff0c;所以服務器的優化也是數據庫優化的第一步。 數據庫服務器通常是從 CPU、內存、磁盤三個角度進行硬件優化的&…

用 CodeBuddy 搭建「MiniGoal 小目標打卡器」:一次流暢的 UniApp 開發體驗

我正在參加CodeBuddy「首席試玩官」內容創作大賽&#xff0c;本文所使用的 CodeBuddy 免費下載鏈接&#xff1a;騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 在日常生活中&#xff0c;我們總是希望能夠堅持一些小習慣&#xff0c;比如每天鍛煉十分鐘、讀一頁書、早睡十分…

OpenCV 環境搭建與概述

// //OpenCV-4.11.0 C VS2019 // 一、OpenCV學習路線 1、入門: OpenCV圖像讀寫、視頻讀寫、基本像素處理、基本卷積處理、基本C開發知識。 2、初級: OpenCV自定義卷積操作、圖像梯度、邊緣提取、二值分析、視頻分析、形態學處理、幾何變換與透視變換。 3、中級: 角點查找、BL…

如何快速更換電腦瀏覽器ip:教程與注意事項

無論是為了訪問地域限制內容、保護隱私&#xff0c;還是解決網絡問題&#xff0c;快速更換瀏覽器IP地址的需求日益增多。以下是快速更換電腦瀏覽器IP地址的幾種常用方法及注意事項&#xff0c;結合了多種場景下的解決方案&#xff1a; 一、快速更換瀏覽器IP的方法 1. 代理服務…

【kafka】kafka概念,使用技巧go示例

1. Kafka基礎概念 1.1 什么是Kafka&#xff1f; Kafka是一個分布式流處理平臺&#xff0c;用于構建實時數據管道和流式應用。核心特點&#xff1a; 高吞吐量&#xff1a;每秒可處理百萬級消息持久化存儲&#xff1a;消息按Topic分區存儲在磁盤分布式架構&#xff1a;支持水平…

掌握Git:版本控制與高效協作指南

一、初始Git 提出問題&#xff1a;無論是在工作還是學習&#xff0c;我們在編寫各種文檔的時候&#xff0c;更改失誤&#xff0c;失誤后恢復到原來版本&#xff0c;不得不復制出一個副本。 每個版本由各自的內容&#xff0c;但最終只有一個報告需要被我們使用。 但在此之前的…

【生活相關-日語-日本-東京-搬家后-引越(ひっこし)(3)-踩坑點:國民健康保險】

【生活相關-日語-日本-東京-搬家后-引越&#xff08;ひっこし&#xff09;&#xff08;3&#xff09;-注意點&#xff1a;國民健康保險】 1、前言2、情況說明&#xff08;1&#xff09;問題說明&#xff08;2&#xff09;情況說明&#xff08;1&#xff09;收到情況&#xff08…

linux——mysql故障排查與生產環境優化

目錄 一&#xff0c;mysql數據庫常見的故障 1&#xff0c;故障現象1 2&#xff0c;故障現象2 3&#xff0c;故障現象3 &#xff14;&#xff0c;故障現象&#xff14; &#xff15;&#xff0c;故障現象&#xff15; &#xff16;&#xff0c;故障現象&#xff16; 二&…

【C#】用 DevExpress 創建帶“下拉子表”的參數表格視圖

展示如何用 DevExpress 創建帶“下拉子表”的參數表格視圖。主表為 參數行 ParamRow&#xff0c;子表為 子項 ChildParam。 一、創建模型類 public class ParamRow {public string Pn { get; set; }public string DisplayName { get; set; }public string Value { get; set; }…

【JavaScript】用 Proxy 攔截對象屬性

目錄 一、Proxy 的基本結構&#xff08;打地基&#xff09; 二、最常用的兩個攔截方法&#xff1a;get 和 set 1. get(target, key) 2. set(target, key, value) 三、說到這&#xff0c;那就可以回到題目來 四、什么是 Reflect&#xff1f; 總結不易&#xff0c;本章節對…

[IMX] 02.GPIO 寄存器

目錄 手冊對應章節 1.GPIO 復用&#xff08;引腳功能選擇&#xff09;- IOMUXC_SW_MUX_CTL_PAD_xxx 2.GPIO 電氣特性 - IOMUXC_SW_PAD_CTL_PAD_xxx 3.GPIO 數據與控制寄存器 3.1.數據 - DR 3.2.輸入/輸出選擇 - GDIR 3.3.狀態 - PSR 3.4.中斷觸發控制 - ICR 3.5.中斷使…