首先介紹一下同餘定理:
所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a=6,b=1,d=5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。
數學上的記法為:
a≡ b(mod d)
可以看出當n常用公式:
1)a≡a(mod d)
2)a≡b(mod d)→b≡a(mod d)
3)(a≡b(mod d),b≡c(mod d))→a≡c(mod d)
如果a≡x(mod d),b≡m(mod d),則
4)a+b≡x+m (mod d)
5)a-b≡x-m (mod d)
6)a*b≡x*m (mod d )
有以上公式可得推論:
(a+b)%c=(a%c+b%c)%c;
(a*b)%c=(a%c*b%c)%c;
對於大數的求餘,聯想到進製轉換時的方法,得到
舉例如下,設大數 m=1234,模n
就等於((((1*10)%n+2%n)%n*10%n+3%n)%n*10%n+4%n)%n
#include#include#include#include#include#includeusing namespace std;
const int inf=0x3f3f3f3f;
const int maxn=105;
int t,l;
char k[maxn];
int a[maxn];
int prime[1000010];
void work()
} }int pnum=0;
for(int i=1;i<1000010;i++)
}int main()
index++;
} if(flag)
printf("good\n");
} return 0;
}
poj2635 同餘定理 素數篩法
題意 給定乙個數,這個數是兩個素數的乘積,並給定乙個限制l,問是否兩個素數中存在小於l的數,若存在輸出較小質數,否則列印 good 思路 1 x a b,a和b都是素數,那麼x只能分解為 1,x 或則 a,b 因為 x 只有四個因子1,a,b,x。3 素數打表,方便快速判斷某個數是否為質數。根據第乙...
poj 2635(同餘模運算)
大致題意 給定乙個大數k,k是兩個大素數的乘積的值。再給定乙個int內的數l 問這兩個大素數中最小的乙個是否小於l,如果小於則輸出這個素數。高精度求模 同餘模定理 1 char格式讀入k。把k轉成千進製kt,同時變為int型。把數字往大進製轉換能夠加快運算效率。若用十進位制則耗費很多時間,會tle。...
POJ1426(BFS 同餘定理)
find the multiple 注意點 可以用一棵樹來表示bfs中各個枝,左枝0,右枝1,然後n 2是n的父節點。類似於huffman樹的定理,最後的輸出序列由 2,2交替運算得來。所以本題關鍵點就是用huffman樹結構儲存所有餘數,並最終輸出。include include include ...