算法比賽中常用的數學知識

一、求某個整數的正約數個數與正約數之和

1.1求某個正整數N的正約數個數?
public class Main {public static void main(String[] args) {System.out.println(count(360));//結果為24}public static long count(long number){long count=1;for(long i=2;i<=Math.sqrt(number);i++){long n=0;while (number%i==0){number=number/i;n++;}if(n>0){count=count*(n+1);}}if(number>1){count=count*2; //處理的是1次冪的情況,因為(1+1)=2;}return count;}
}
?1.2求某個正整數N的正約數之和?
public class Main {public static void main(String[] args) {System.out.println(count(360));}public static long count(long number) {long sum = 1;for (long i = 2; i <= Math.sqrt(number); i++) {long exponent = 0;while (number % i == 0) {number /= i;exponent++;}if (exponent > 0) {// 正確使用等比數列求和公式計算某個質因數對應的約數和long termSum = (long) ((Math.pow(i, exponent + 1) - 1) / (i - 1));// 累乘不同質因數對應的約數和sum *= termSum;}}//處理指數為1的情況,因為number的1次方是number,0次方是1if (number > 1) {sum *= (number + 1);}return sum;}
}

二、求最大公約數

public static long gcd(long a,long b) {while(b!=0) {long temp=b;b=a%b;a=temp;}return a;}

三、分解質因數

 public static void ps(int n) {List<Integer> list=new ArrayList<>();for(int i=2;i<=Math.sqrt(n);i++) {while(n%i==0) {list.add(i);  //找到一個質因數n=n/i;  //更新待分解的數}}if(n>1) {list.add(n); //如果最后余數大于1,則說明它本身也是質數}
}

四、快速冪

import java.util.Scanner;public class a {public static void main(String[] args) {Scanner scan=new Scanner(System.in);long b=scan.nextInt();long p=scan.nextInt();long k=scan.nextInt();System.out.println(quickmi(b,p,k));}public static long quickmi(long b,long p,long k){long res=1;while(p>0){if((p&1)==1){res=res*b%k;}b=b*b%k;p=p>>1;}return res;}}

?五、費馬小定理

乘法逆元的定義

?

import java.util.Scanner;public class a {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();while (n-- > 0) {long b=scan.nextLong();long p=1000000007-2;long k=1000000007;System.out.println(quickmi(b,p,k));}}public static long quickmi(long b,long p,long k){long res=1;while(p>0){if((p&1)==1){res=res*b%k;}b=b*b%k;p=p>>1;}return res;}}

五,求組合數問題(注意看數據范圍,不同范圍不同求法)

?


import java.util.Scanner;public class Main {static long[] arr=new long[16];public static void main(String[] args) {Scanner scan=new Scanner(System.in);int q=scan.nextInt();arr[0]=1;arr[1]=1;for(int i=2;i<16;i++) {arr[i]=i*arr[i-1];}while(q-->0) {int n=scan.nextInt();int m=scan.nextInt();System.out.println(jiec(n,m));}}public static long jiec(int n,int m) {long ans=arr[n]/(arr[m]*arr[n-m]);return ans;}}    
用快速冪加費馬小定理

import java.util.Scanner;public class Main {static long N=1000000007;static long[] arr;public static void main(String[] args) {Scanner scan=new Scanner(System.in);int a=scan.nextInt();int b=scan.nextInt();arr=new long[3001];arr[0]=1;for(int i=1;i<3001;i++){arr[i]=arr[i-1]*i%N;}System.out.println(jisuan(a,b));}//快速冪,a的b次方public static long quickmi(long a,long b){long ans=1;while(b>0){if((b&1)==1){ans=ans*a%N;}a=a*a%N;b=b>>1;}return ans;}//計算組合數public static long jisuan(int a,int b){long fenmu=arr[b]*arr[a-b]%N;//費馬小定理long sum=quickmi(fenmu,N-2);long ans=arr[a]*sum%N;return ans;}
}

六、素數篩


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class a {public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n = scan.nextInt();boolean[] prime = new boolean[n + 1]; //標記是否為素數for (int i = 2; i <= n; i++) {prime[i] = true;}List<Integer> list = new ArrayList<>();  //存素數for (int i = 2; i <= n; i++) {if (prime[i]) {list.add(i);}for (int j = 0; j < list.size() && i * list.get(j) <= n; j++) {//i * list.get(j) <= n這個條件是為了防止數組越界prime[i * list.get(j)] = false;if (i % list.get(j) == 0) {break;}}}System.out.println(list.size());}}

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

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

相關文章

虛擬Ubuntu系統 開機提示:SMBus Host controller not enabled 后正常啟動,去除這個提示提升開機速度。

如題&#xff0c;虛擬機中的Ubuntu系統開機提示&#xff1a;SMBus Host controller not enabled&#xff0c;雖然能正常啟動&#xff0c;但不僅影響開機速度&#xff0c;而且還膈應人。 使用命令查看模塊 lsmod | grep piix4 發現i2c_piix4有問題&#xff0c; 禁止 i2c_piix4…

NLP基礎知識 與 詞向量的轉化方法 發展

目錄 1.NLP 基礎知識點 為什么需要自然語言處理? 自然語言處理有哪些分類? 自然語言處理有哪些實際應用? 為什么需要自然語言處理? 自然語言處理有哪些分類? 自然語言處理有哪些實際應用? 自然語言處理的技術/工作原理是什么? 2.NLP文本轉化為詞向量的方法 2…

【FPGA基礎學習】狀態機思想實現流水燈

目錄 一、用狀態機實現LED流水燈1.狀態機思想簡介1. 1基本概念1.2.核心要素1.3分類與模型 2.LED流水燈 二、CPLD與FPGA1.技術區別2.應用場景3.設計選擇建議 三、HDLbits組合邏輯題目 一、用狀態機實現LED流水燈 1.狀態機思想簡介 1. 1基本概念 ? 狀態機&#xff08;Finite …

CSS語言的游戲AI

CSS語言的游戲AI探討 隨著技術的飛速發展&#xff0c;游戲行業也在不斷地革命和演變。游戲中的人工智能&#xff08;AI&#xff09;作為一種重要的設計元素&#xff0c;其復雜性和智能程度對游戲的體驗、玩法和整體表現都有著深遠的影響。近年來&#xff0c;CSS&#xff08;Ca…

docker配置redis容器時配置文件docker-compose.yml示例

1.配置數據節點&#xff08;主從節點&#xff09; version: 3.7 services:master:image: redis:5.0.9container_name: redis-masterrestart: alwayscommand: redis-server --appendonly yesports:- 6379:6379slave1:image: redis:5.0.9container_name: redis-slave1restart: a…

【WPF】IOC控制反轉的應用:彈窗但不互相調用ViewModel

全稱&#xff1a;Inversion of Control&#xff0c;控制反轉 場景&#xff1a;A頁面需要調用B/C頁面等&#xff0c;防止直接在VM中新建別的頁面實例&#xff0c;使用IOC設計架構&#xff1b; 創建Service&#xff0c;在Service中實現頁面的實例創建和定義頁面輸入輸出參數。 在…

MySQL學習筆記十五

第十七章組合查詢 17.1組合查詢 MySQL允許執行多個查詢&#xff08;多條SELECT語句&#xff09;&#xff0c;并將結果作為單個查詢結果集返回。這些組合查詢通常稱為并&#xff08;union&#xff09;或復合查詢&#xff08;compound query&#xff09;。 以下幾種情況需要使…

【MySQL】安裝

下載 MySQL :: MySQL Downloads 安裝 mysql 驗證

ffpyplayer+Qt,制作一個視頻播放器

ffpyplayerQt&#xff0c;制作一個視頻播放器 項目地址FFmpegMediaPlayerVideoWidget 項目地址 https://gitee.com/chiyaun/QtFFMediaPlayer FFmpegMediaPlayer 按照 QMediaPlayer的方法重寫一個ffpyplayer # coding:utf-8 import logging from typing import Unionfrom PySide…

Spring Boot 國際化配置項詳解

Spring Boot 國際化配置項詳解 1. 核心配置項分類 將配置項分為以下類別&#xff0c;便于快速定位&#xff1a; 1.1 消息源配置&#xff08;MessageSource 相關&#xff09; 控制屬性文件的加載、編碼、緩存等行為。 配置項作用默認值示例說明spring.messages.basename指定屬…

拍攝的婚慶視頻有些DAT的視頻文件打不開怎么辦

3-12 現在的婚慶公司大多提供結婚的拍攝服務&#xff0c;或者有一些第三方公司做這方面業務&#xff0c;對于視頻拍攝來說&#xff0c;有時候會遇到這樣一種問題&#xff0c;就是拍攝下來的視頻文件&#xff0c;然后會有一兩個視頻文件是損壞的&#xff0c;播放不了&#xff0…

【力扣hot100題】(073)數組中的第K個最大元素

花了兩天時間搞明白答案的快速排序和堆排序。 兩種都寫了一遍&#xff0c;感覺堆排序更簡單很多。 兩種都記錄一下&#xff0c;包括具體方法和易錯點。 快速排序 class Solution { public:vector<int> nums;int quicksort(int left,int right,int k){if(leftright) r…

【親測】Linux 使用 Matplotlib 顯示中文

文章目錄 安裝中文字體在Matplotlib中使用該字體來顯示中文 在 Linux 系統中使用 Matplotlib 繪制圖表時&#xff0c;如果需要顯示中文&#xff0c;可能會遇到中文字符顯示為方塊或者亂碼的問題。這是因為Matplotlib 默認使用的字體不支持中文。本文手把手帶你解決這個問題。 …

Redis Java 客戶端 之 SpringDataRedis

SpringDataRedis SpringData是Spring中數據操作的模塊&#xff0c;包含對各種數據庫的集成&#xff0c;其中對Redis集成模塊就叫做SpringDataRedis&#xff0c; 官方地址&#xff1a;https://spring.io/projects/spring-data-redis 特性&#xff1a; 提供了對不同Redis客戶端…

數字化轉型:重構生存邏輯,不止系統升級

數字化轉型不過是升級系統&#xff0c;砸了錢、耗了力&#xff0c;卻沒達到預期&#xff0c;競爭力也沒提升。實際上&#xff0c;數字化轉型是對企業生存邏輯的徹~底重構&#xff0c;關乎商業模式、運營流程等方方面面。? 很多企業覺得數字化轉型是 IT 部門的事&#xff0c;只…

C語言隊列的實現

目錄 ?編輯 &#xff08;一&#xff09;隊列的定義,初始化及創建結點 &#xff08;二&#xff09;入隊和出隊&#xff0c;以及取隊頭隊尾的數據 (三)銷毀隊列 隊列是指只允許在一端進行插入數據操作&#xff0c;在另?端進行刪除數據操作的特殊線性表&#xff0c;隊列具有先…

mapbox進階,使用本地dem數據,加載hillshade山體陰影圖層

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??hillshade 山體陰影圖層 api1.3.1 ??…

量子糾錯碼實戰:從Shor碼到表面碼

引言&#xff1a;量子糾錯的必要性 量子比特的脆弱性導致其易受退相干和噪聲影響&#xff0c;單量子門錯誤率通常在10?~10?量級。量子糾錯碼&#xff08;QEC&#xff09;通過冗余編碼測量校正的機制&#xff0c;將邏輯量子比特的錯誤率降低到可容忍水平。本文從首個量子糾錯…

10. git switch

基本概述 git switch是 Git 2.23 版本之后新增的命令&#xff0c;專門用于切換分支&#xff0c;目的是替代 git checkout 中與分支操作相關的功能&#xff0c;使命令語義更清晰、更安全。 基本用法 1.切換到已有分支 git switch <branch-name>常用選項 1.從當前分支…

LeetCode 熱題 100 堆

215. 數組中的第K個最大元素 給定整數數組 nums 和整數 k&#xff0c;請返回數組中第 **k** 個最大的元素。 請注意&#xff0c;你需要找的是數組排序后的第 k 個最大的元素&#xff0c;而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 …