【算法筆記】歐拉降冪公式與歐拉函數

歐拉降冪公式

在數論中,歐拉降冪公式是一個強大的工具,用于簡化大指數模運算。公式如下:

?k>φ(m),有Ak≡Akmodφ(m)+φ(m)(modm)成立。\forall k > \varphi(m),有 A^k \equiv A^{k \mod \varphi(m) + \varphi(m)} \pmod{m} 成立。 ?k>φ(m),有AkAkmodφ(m)+φ(m)(modm)成立。

其中:

  • AAAmmm 是正整數
  • φ(m)\varphi(m)φ(m) 是歐拉函數
  • kkk 是指數,且 k>φ(m)k > \varphi(m)k>φ(m)

這個公式允許我們將非常大的指數 kkk 降低到可計算的范圍,從而高效地計算模冪。

歐拉函數

歐拉函數 φ(n)\varphi(n)φ(n) 表示小于或等于 nnn 的正整數中與 nnn 互質的數的個數。例如:

  • φ(1)=1\varphi(1) = 1φ(1)=1
  • φ(2)=1\varphi(2) = 1φ(2)=1(因為1與2互質)
  • φ(3)=2\varphi(3) = 2φ(3)=2(因為1和2與3互質)
  • φ(4)=2\varphi(4) = 2φ(4)=2(因為1和3與4互質)
  • 如果 mmm 是質數,則φ(m)=m?1\varphi(m) = m - 1φ(m)=m?1

計算歐拉函數 φ(n)\varphi(n)φ(n) 的代碼:

int euler(int n) {int ans = n;  // 初始化結果為nfor (int i = 2; i * i <= n; ++i)  // 遍歷2到√nif (n % i == 0) {  // 如果i是n的質因數ans = ans / i * (i - 1);  // 應用公式:ans *= (1 - 1/i)while (n % i == 0)  // 除去所有i因子n /= i;}if (n > 1)  // 處理剩余的大于√n的質因數ans = ans / n * (n - 1);return ans;
}

原理基于質因數分解,歐拉函數是積性函數,即如果 mmmnnn 互質,則 φ(mn)=φ(m)?φ(n)\varphi(mn) = \varphi(m) \cdot \varphi(n)φ(mn)=φ(m)?φ(n)。對于任意正整數 mmm,其歐拉函數可以通過以下公式計算:
φ(m)=m∏p∣m(1?1p)\varphi(m) = m \prod_{p | m} \left(1 - \frac{1}{p}\right)φ(m)=mpm?(1?p1?)
時間復雜度 O(sqrt(n))O(sqrt(n))O(sqrt(n))

例題

洛谷P12847 [藍橋杯 2025 國 A] 斐波那契數列

n<=1e18

AC代碼:

(這里還用到了矩陣快速冪求斐波那契數列,以及斐波那契前n項和的知識)

#include <bits/stdc++.h>
using namespace std;
const int MOD = 998244353 - 1;long long qpow(long long a, long long b) {long long res = 1;while (b > 0) {if (b & 1)res = res * a % (MOD + 1);a = a * a % (MOD + 1);b >>= 1;}return res;
}struct Matrix { // 矩陣結構體2x2long long m[2][2];Matrix() { memset(m, 0, sizeof(m)); }
};// 矩陣乘法(優化版)
Matrix multiply(const Matrix &a, const Matrix &b) {Matrix res;for (int i = 0; i < 2; ++i) {for (int j = 0; j < 2; ++j) {for (int k = 0; k < 2; ++k) {res.m[i][j] = (res.m[i][j] + a.m[i][k] * b.m[k][j]) % MOD;}}}return res;
}// 矩陣快速冪
Matrix matrix_pow(Matrix mat, long long power) {Matrix result;result.m[0][0] = result.m[1][1] = 1; // 單位矩陣while (power > 0) {if (power & 1) {result = multiply(mat, result);}mat = multiply(mat, mat);power >>= 1;}return result;
}// 計算斐波那契數(從F(1)=1開始)
long long fibonacci(long long n) {if (n == 0)return 0;if (n == 1 || n == 2)return 1;Matrix base;base.m[0][0] = base.m[0][1] = base.m[1][0] = 1;Matrix result = matrix_pow(base, n - 2);return (result.m[0][0] + result.m[0][1]) % MOD;;
}int main() {long long n;cin >> n;if (n == 1) {cout << 2 << endl;} else if (n == 2) {cout << 6 << endl;} else {/*斐波那契數列的前n項和:S(n) = F(n+2)-1*/int p2 = (1 + fibonacci(n - 2 + 2) - 1) % MOD + MOD;int p3 = (fibonacci(n - 1 + 2) - 1) % MOD + MOD;cout << qpow(2, p2) * qpow(3, p3) % (MOD + 1) << endl;}return 0;
}

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

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

相關文章

基于STM32的交通燈設計—緊急模式、可調時間

基于STM32交通燈設計&#xff08;仿真&#xff0b;程序&#xff0b;設計報告&#xff09;功能介紹具體功能&#xff1a;1.數碼管和LED模擬交通燈&#xff1b;2.南北綠燈9秒&#xff0c;東西綠燈15秒&#xff0c;黃燈2秒&#xff1b;3.緊急情況&#xff1a;按下按鍵&#xff0c;…

汽車軟件研發智能化:AI在CI/CD中的實踐

當汽車行業加速駛入“軟件定義”的時代&#xff0c;軟件已成為決定車輛競爭力的核心要素。從智能座艙的多場景交互到自動駕駛的復雜決策邏輯&#xff0c;汽車軟件的代碼量逐年遞增&#xff0c;復雜度呈指數級攀升&#xff0c;傳統研發流程深陷困境&#xff1a;代碼質量管控滯后…

DeepSeek:開啟智能體驅動對話式數據分析新時代

在數字化浪潮洶涌澎湃的當下,數據已然成為驅動企業發展、推動科學研究以及優化日常生活決策的關鍵力量。數據分析,作為從海量數據中提取有價值信息、洞察趨勢、挖掘規律的核心手段,其重要性不言而喻。無論是企業精準把握市場動態、優化運營流程,還是科研人員探索未知領域、…

MCP驅動企業微信智能中樞:企業級機器人服務構建全攻略

一、背景與目標 公司規模200-300人&#xff0c;主要使用企業微信作為內部溝通平臺。日常面臨大量重復性通知工作&#xff0c;如會議提醒、系統維護通知、項目進度更新等。 業務痛點&#xff1a; 人工發送通知效率低下&#xff0c;平均3分鐘/條重要信息傳遞不及時&#xff0c…

語音識別系統的技術核心:從聲音到文字的智能轉換

語音識別技術&#xff0c;也稱為自動語音識別&#xff08;ASR&#xff09;&#xff0c;其核心目標是將人類語音信號轉換為對應的文本或指令。隨著人工智能的發展&#xff0c;語音識別已成為智能助手、實時翻譯、車載系統等領域的關鍵技術。其工作原理可分解為信號處理、特征提取…

《用 Django 構建博客應用:從模型設計到文章管理的全流程實戰》

《用 Django 構建博客應用:從模型設計到文章管理的全流程實戰》 一、引言:為什么選擇 Django 構建博客系統? 在 Python 的 Web 框架中,Django 被譽為“全能型選手”。它不僅提供了強大的 ORM、模板系統、認證機制和后臺管理,還鼓勵開發者遵循“DRY”(Don’t Repeat You…

以 R1 為視角,手把手教你畫 OSPF 最短路徑樹與推導路由表

視頻版講解>>>>>>>>>>>>>>>>>>>OSPF最短路徑樹構建與路由計算練習&#xff08;一&#xff09; 在 OSPF 協議的學習中&#xff0c;“紙上談兵” 不如 “實戰推演”—— 尤其是以特定路由器為主視角&#xff0c;從 LS…

axios請求緩存與重復攔截:“相同請求未完成時,不發起新請求”

import axios from "axios";// 1. 緩存已完成的請求結果&#xff08;key&#xff1a;請求URL參數&#xff0c;value&#xff1a;數據&#xff09; const requestCache new Map(); // 2. 記錄正在執行的請求&#xff08;避免并行重復請求&#xff09; const pendingR…

k8s的SidecarSet配置和initContainers

目錄引言一、k8s如何實現Sidecar這段配置正確嗎&#xff1f;正確的配置方式為什么這樣做&#xff1f;一個簡單的例子總結二、什么是SidecarSet主要功能使用場景示例配置三、也可以通過 initContainers 的 restartPolicy 實現邊車邏輯四、題外話&#xff1a;什么是InitContainer…

PostgreSQL與SQL Server:為什么 PostgreSQL遙遙領先

PostgreSQL與SQL Server:為什么 PostgreSQL遙遙領先 在數據庫領域&#xff0c;PostgreSQL 和 Microsoft SQL Server 長期以來一直是競爭對手。然而&#xff0c;近年來&#xff0c;PostgreSQL 以其性能、靈活性和創新功能讓 SQL Server 望塵莫及。以下是對 PostgreSQL 明顯優越的…

零跑汽車8月交付57066臺,同比增長超88%

零跑汽車官宣&#xff0c;在剛剛過去的8月份&#xff0c;品牌交付57066輛&#xff0c;同比增長超88%再創歷史新高&#xff0c;并實現了連續6個月穩坐新勢力銷冠。目前&#xff0c;零跑旗下共有T03、B10、B01、C01、C10、C11、C16等七款車型在售&#xff0c;得益于零跑堅持全棧自…

DNS地址推薦

DNS地址推薦&#xff08;2025年最新整理&#xff09; 以下DNS服務器按使用場景分類&#xff0c;涵蓋國內、國際、安全隱私、游戲優化等需求&#xff0c;均為2025年仍在維護的公共DNS服務&#xff1a; 一、國內通用DNS&#xff08;適合中國大陸用戶&#xff09; 國內DNS服務器對…

興趣電商內容數據洞察未來市場走向研究——基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的實踐

摘要&#xff1a;在互聯網電商數據高度透明的當下&#xff0c;“已發生”的品類規模和品類增速數據雖易獲取&#xff0c;但主要反映市場歷史狀況&#xff0c;難以預測未來走向。興趣電商的內容數據因揭示消費者“新需求”和“潛在需求”&#xff0c;在宏觀層面更早體現用戶消費…

【已更新文章+代碼】2025數學建模國賽A題思路代碼文章高教社杯全國大學生數學建模-煙幕干擾彈的投放策略

截止周四晚上11點已更新五個問題完整建模和問題一二的代碼 截止周五早上完整版已更新 可以看主頁最新博文獲取 完整內容請看文末最后的推廣群2.1問題1的分析 問題1是典型的確定性時空幾何與運動學計算問題&#xff0c;核心在于通過建立坐標系下的參數方程&#xff0c;量化煙幕云…

UE4 Rider如何直接調試PC DebugGame

背景1、用UBT 打了一個exe的包&#xff0c;打開時遇到崩潰&#xff0c;想獲知這個崩潰時的中間信息&#xff0c;例如材質信息&#xff0c;于是我直接雙擊 打包位置下的崩潰dmp文件 &#xff08;MyGame/Saved/Archived/WindowsClient/MyGame/Saved/Crashes/....dmp&#xff09; …

【FastDDS】Layer DDS之Domain ( 06-Partitions )

在DDS(Data Distribution Service,數據分發服務)中,Partition(分區) 是一種在“域(Domain)”提供的物理隔離基礎上,為發布者(Publisher)和訂閱者(Subscriber)新增的邏輯隔離與通信篩選機制。它的核心作用是在“域”和“主題(Topic)”之外,進一步精細化控制哪些…

FastVLM:高效視覺編碼助力視覺語言模型突破高分辨率效率瓶頸

想要掌握如何將大模型的力量發揮到極致嗎&#xff1f;葉梓老師帶您深入了解 Llama Factory —— 一款革命性的大模型微調工具。 1小時實戰課程&#xff0c;您將學習到如何輕松上手并有效利用 Llama Factory 來微調您的模型&#xff0c;以發揮其最大潛力。 CSDN教學平臺錄播地址…

【HarmonyOS】一步解決彈框集成-快速彈框QuickDialog使用詳解

【HarmonyOS】一步解決彈框集成-快速彈框QuickDialog使用詳解 一、集成的應用背景介紹 最近比較忙&#xff0c;除了工作節奏調整&#xff0c;有重點項目需要跟。業務時間&#xff0c;也因為參加了25年創新大賽&#xff0c;我們網友&#xff0c;組成了鴻蒙超新星研發團隊&#x…

當公司在你電腦上安裝了IP-guard,你必須知道的事

保護公司機密的同時&#xff0c;你的隱私權何在&#xff1f;在現代企業中&#xff0c;為了保護敏感數據和知識產權&#xff0c;很多公司會選擇在員工電腦上安裝監控軟件&#xff0c;IP-guard 就是其中常見的一款。如果你發現公司電腦安裝了IP-guard&#xff0c;以下幾點是你需要…

拆分TypeScript項目的學習收獲:避免緩存問題,peerDependencies,引用本地項目

最近需要將工作中的一個TS包拆出一部分代碼&#xff0c;以便在多個團隊和項目中共享。原以為這會是一項特別簡單的工作&#xff0c;但是也花了兩天才大致拆成功。因此記錄一下&#xff0c;也給有類似需求的同學一點經驗。 所拆項目的大致功能&#xff1a;整個項目的結構大致分為…