ACM數論中的常見的模板和結論
歐幾里得演算法實現。遞迴實現
1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<iostream> 5 using namespace std; 6 __int64 gcd(__int64 y,__int64 x) 7 { 8 __int64 ans=0; 9 if(x==0) 10 ans=y; 11 else 12 ans=gcd(x,y%x); 13 return ans;14 } 15 int main() 16 { 17 int t; 18 __int64 A,B; 19 scanf("%d",&t); 20 scanf("%I64d %I64d",&A,&B); 21 if(A>B) 22 swap(A,B); 23 printf("%I64d\n",gcd(A,B)); 24 } 25 return 0; 26 }
2:最小公倍數和最大公約數的關係
設n和m的最大公約數是p,最小公倍數是q,那麼有下列的關係
p*q=n*m,所以求兩數的最大公約數可以轉換成求求兩數的最大公約數再根據兩者之間的關係來求最小公倍數= =
3:素數的判定
1> 試商法
int is_prime() { for(int i=2;i*i<=n;i++) { if(n%i==0) return 0; } return 1; }
2>篩選法
陣列a[]存的是1000000以內的素數
int get_prme() { int k=0; for(int i=2;i<=1000000;i++) { if(!chick[i]) a[k++]=i; for(int j=0;j<k;j++) { if(i*a[j]>1000000) break; chick[a[j]*i]=1; if(i%a[j]==0) break; } } return 0; } //篩選法求素數
3:分解一個數的質因子,其中a[]存的是素數,f[]存的是某個數的質因子= =
int get_fx(int x) { int j,k=0; for( j=0;a[j]*a[j]<=x;j++) { if(x%a[j]==0) f[ k++]=a[j]; while(x%a[j]==0) { x=x/a[j]; f[k++]=a[j]; } if(x==1) break; } if(x!=1) f[k++]=x; return 0 }
4:能被11整除的數他滿足(SUM奇-SUM偶)的絕對值能被11整除= =
5:快速冪演算法
1 int qPow(int A, int n) 2 { 3 if (n == 0) return 1; 4 int rslt = 1; 5 6 while (n) 7 { 8 if (n & 1) //如果n為奇數 9 { 10 rslt *= A%10; 11 } 12 A *= A; 13 n >>= 1; 14 } 15 return rslt%10; 16 }
運用快速冪演算法可以把求n^n的複雜度講到logn,
6:求n^n的個位數
因為是各位數沒有進位,通過打表發現n的各位數是0,1,2,5,6,7的話無論是多少次冪他的個位數都是他自己本身= =
然後我們看其他的
2:4 6 8 2
3:3 9 7 1
4:6 4 6 1
8:4 2 6 8
9:1 9 1 9
上面的數陣表示當n的個位數是2,3,4,8,9是n次冪之後的結果變化,然後因為只有四個數的變化我們考慮n%4,而且n%4的結果只會是0,2...
所以綜上所述我們可以得出下面的陣列
1 int data[10][4]={{0,0,0,0},{1,1,1,1},{6,6,4,4},{3,3,7,7},{6,4,6,4},{5,5,5,5,},{6,6,6,6},{7,7,3,3},{6,6,4,4},{1,9,1,9}};
下面給出完整程式碼
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; int data[10][4]={{0,0,0,0},{1,1,1,1},{6,6,4,4},{3,3,7,7},{6,4,6,4},{5,5,5,5,},{6,6,6,6},{7,7,3,3},{6,6,4,4},{1,9,1,9}}; int main() { int n; while(scanf("%d",&n)!=EOF) printf("%d\n",data[n%10][n%4]); return 0; }
參考部落格http://m.blog.csdn.net/blog/chenminghe271/6766472
7:n的階乘後面的零
通過打表可以得出結論n的階乘後面的零呈現下面的規律
0 0,1 0,2 0,3 0,4 0,5 1,6 1,7 1,8 1,9 1,10 2,11 2,13 2,14 2,15 3,16 3,17 3,18 3,19 3,20 4;ps(11 2表示11的階乘後面有2個0)每五個數0的數就會+1
我們進行25的打表的是發現25!後面有6個0,而24的階乘後面只有4個零。這裡發生突變了,不是平常的+1,而是+2。而且有關5的次方冪的數都會發生突變,。
那個突變的規律就是1+n(n表示m這個數可以用5^m來表示。。。
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #include<stack> #include<set> #include<queue> #include<math.h> #define maxn 100000 #define long long LL using namespace std; int main() { int n; scanf("%d",&n); int sum=0; int i=1; int ans=0; while(sum<n) { ans+=n/pow(5,i); sum=pow(5,i); i++; } printf("%d\n",ans); return 0; }
8:快速冪取餘
快速冪取餘其實就是在求快速冪的時候每一步都取餘
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; int qpow(int x,int a,int p) { int ans=1; x=x%p; while(a>0) { if(a&1) ans=(ans*x)%p; x=(x*x)%p; a>>=1; } return ans; } int main() { int A,B,C; scanf("%d %d %d",&A,&B,&C); printf("%d\n",qpow(A,B,C)); return 0; }//求A^B%C
相關推薦
ACM數論中的常見的模板和結論
1:最大公約數的求法 歐幾里得演算法實現。遞迴實現 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<iostream>
Django中的模板和分頁
con lock turn if條件 ndb temp name ... simple 模板 在Templates中添加母版: - 母版...html 母版(master.html)中可變化的地方加入: {%block content%}
CSS中常見屬性和值、盒子和定位
一、CSS中常見屬性和值 1、字型屬性 1> 字型家族:font-family (宋體、楷體...) 2> 字型風格:font-style (normal普通、italic斜體) 3> 字型大小:font-size 4> 字型加粗:font-weight:bold 2、控制文
【C#winform程式設計中常見問題和方法】
一、 tabpage怎麼視窗全屏顯示 將tabpage的Dock屬性改成Fill 二、tabpage怎麼自適應窗體大小,比例縮放 將tabpage的Anchor屬性改為上下左右 三、不允許視窗放大或者縮小 更改MaximizeBox和
ACM數論一些簡單結論和程式設計小技巧總結
前言 最近被數論的模運算卡了一發。。稍微總結一下最近用到的數論結論 另外,get了一些實現的技巧,也一起記一下~免得忘了~ 數論簡單結論 n = p(1) ^ num(1) * p(2) ^
PHP 面向對象中常見關鍵字使用(final、static、const和instanceof)
對象的引用 符號 存在 stat true 函數 php 面向對象 his 對象引用 PHP 面向對象中常見關鍵字的使用: 1、final :final關鍵字可以加在類或者類中方法之前,但是不能使用final標識成員屬性。 作用: 使用final標識的類,不能被
ACM中常見錯誤對應表
memory exce href .com err 錯誤 put log ole 因為經常寫錯題,找了個這個看看。。。 傳送門:http://www.cnblogs.com/ZouCharming/p/3868844.html 我太垃圾了。。。 我出現過的錯誤: Wrong
為什麽 c++中函數模板和類模板的 聲明與定義需要放到一起?
color code 我們 ack 二進制 通過 如果 之前 類型 將模板的聲明與定義寫在一起實在很不優雅。嘗試用“傳統”方法,及在.h文件裏聲明,在.cpp文件裏定義, 然後在main函數裏包含.h頭文件,這樣會報鏈接錯誤。why!!!!!!!!!!!!! 這是因為函數模
Makefile中常見的自動變量和含義
makefile info 自動 vmm var p s xms userinfo href 劫V3W71v9QGW貝膳http://jz.docin.com/cjwjy04096 1姥樸5KAQ訪顯39http://shufang.docin.com/fjqbs11
Thymeleaf 模板 在spring boot 中的引用和應用
end text www. bean template har ica ngs sta Thymeleaf是一個java類庫,他是一個xml/xhtml/html5的模板引擎和Struts框架的freemarker模板類似,可以作為mvc的web應用的view層。 Thy
VC++和C語言中常見數據類型轉換為字符串的方法
char* 北京 相同 字符指針 ascii bst sdn sprint 出現 1。短整型(int) itoa(i,temp,10);///將i轉換為字符串放入temp中,最後一個數字表示十進制 itoa(i,temp,2); ///按二進制方式轉換 2。長整型(long
flask學習(十):模板中訪問模型和字典的屬性
src info .com 分享圖片 prop 學習 pan ram 使用 訪問模型中的屬性或者是字典,可以通過{{params.property}}的形式,或者是使用{{params[‘age‘]}}這樣的形式 flask學習(十):模板中訪問模型和字典的屬性
網絡請求中常見的加密機制和加密算法理解
還原 查找 判斷 客戶 只需要 tle 共享 www. .cn 請求安全性: 服務器端在接收到請求的時候,要主動鑒別該請求是否有效,是否可接受。 token:已登陸用戶的識別碼 解決的問題:用戶調用接口時,不用每次都帶上用戶名和密碼,避免了頻繁在網絡中傳輸密碼被
資料分析過程中常見的一些指標和概念解釋(使用者生命週期分析)
一些使用者生命週期分析中經常遇到的一些名詞的解釋。參考新增連結描述 會話 會話就是session,也就是使用者的一次開啟和啟動。會話是行為資料記錄的必要維度,會話的準確性直接影響對使用者行為的解讀以及部分關鍵統計指標的準確性。 判定: 從開啟產品到關閉產品視為一次會話;
Html和CSS在瀏覽器中常見的相容性問題處理
1,居中問題 格里的內容,IE預設為居中,而FF預設為左對齊,可以嘗試增加程式碼: margin: 0 auto; 2,高度問題 兩上下排列或巢狀的格,上面的格設定高度(高度),如果DIV裡的實際內容大於所設高度,在FF中會出現兩個格重疊的現象;
Flask中常見的資料庫定義和資料庫遷移
from datetime import datetime from werkzeug.security import generate_password_hash, check_password_hash from info import constants from . import db
那些年,面試中常見的資料結構基礎和演算法題(下)
前言 這是 資料結構和演算法面試題系列的下半部分,這部分主要是演算法類 包括二分查詢、排序演算法、遞迴演算法、隨機演算法、揹包問題、數字問題等演算法相關內容。本系列完整程式碼在 github 建了個倉庫,所有程式碼都重新整理和做了一些基本的測試,程式碼倉庫地址在這裡: shishujuan/dsalg
Spark專案實戰-實際專案中常見的優化點-分配更多的資源和調節並行度
1、分配更多的資源 (1)分配哪些資源?executor、cpu per executor、memory per executor、driver memory。 (2)在哪裡分配這些資源?在我們在生產環境中,提交spark作業時,用的spark-submit shell指
PHP陣列和XML相互轉換的函式,微信中常見的Sign生成函式
//陣列轉Xml function ArrToXml($arr) { if(!is_array($arr) || count($arr) == 0) return ''; $xml = "<xml>"; foreach ($arr as $key=>$val) {
網路請求中常見的加密機制和加密演算法理解
請求安全性: 伺服器端在接收到請求的時候,要主動鑑別該請求是否有效,是否可接受。 token:已登陸使用者的識別碼 解決的問題:使用者呼叫介面時,不用每次都帶上使用者名稱和密碼,避免了頻繁在網路中傳輸密碼被截獲的風險。 使用場景:使用者登入系統時傳入使用者名稱和密碼,伺服器校驗成功之後,根