Time of Update: 2018-12-04
題意:給一個整數n的素數因子指數序列:p0^e0,p1^e1,……pi^ei.它表示n=p0^e0*p1^e1*……*pi^ei(其中pi為素因子)。現在讓你求n-1這個數的素因子指數序列,而且是按素因子降序輸出。#include<iostream>#include<string>using namespace std;string s;int a[1000];int num;void init(){ int sum=0; num=1; for(int
Time of Update: 2018-12-04
1、求最大公約數,最小公倍數;int gcd(int x, int y){ if( 0==y ) return x; else return gcd( y, x%y );}int lcm(int x, int y){ return x/gcd(x,y)*y;} 2、素數篩選//篩選法計算素數;最大範圍1000000; #define maxn 1000000 //計算範圍; bool isprime[maxn+10]; //標記是否為素數; int prime[78500]; //
Time of Update: 2018-12-04
看完數論數的這一段,覺得這個演算法太精闢了,其實擴充歐幾裡德演算法就是書上的公式翻譯成代碼,實在是太棒了,我還SB似的去糾結過程,其實自己已經會筆算了可是書上的第二種解二元一次不定方程方法,目前還在糾結中...運用的定理中的推論得出一定存在整數 x , y 使得 ax + by =gcd( a,b); 成立. 同樣有定理得到 如果 ax + by = n 有解,則 gcd( a,b ) | n 一定成立令 a1 = a | gcd( a,b ); b1 = b |
Time of Update: 2018-12-04
題目連結: http://codeforces.com/problemset/problem/131/C因為題目看錯的原因,導致結果一直wa..悲催..求組合數學一直有一個公式,但是編程還是有很大的技巧..#include<iostream>using namespace std;long long fan(int n,int m){ //// 組合公式 long long sum=1; for(int i=1;i<=n-m;i++){ ////
Time of Update: 2018-12-04
不知道你會不會遇到這種情況,在瀏覽器裡看人家的代碼的時候,一般網頁內建的代碼框是有行標的,當然這是方便你查看代碼,但是,當你想要把其中一段代碼貼出來,放到IDE裡面Run一下的時候,杯具來了,每行開頭都有幾個可愛的數字……如果比較短的話,可以手動刪掉,但是當你貼的是一段好幾十行,甚至幾百行的代碼的時候,一行一行刪除那幾個數字,嗯,是很銷魂的事情……該程式其實就是在檔案重新導向的同時,去掉每行代碼前面的行標,然後簡單的加上了縮排(是C/C++語言風格),歡迎板磚,歡迎補充如何使用:將代碼編譯運行產
Time of Update: 2018-12-04
密碼學裡面的逆元是什麼意思?詳細點,別抄百度百科裡面的!問題補充:還有11的負一次方等於19是怎麼回事?滿意回答2011-04-11 00:10逆元是模運算中的一個概念,我們通常說A是B模C的逆元,實際上是指AB=1 (mod C),也就是說A與B的乘積模C的餘數為1。可表示為A=B^(-1) mod C。逆元是積性函數, 補充:假定A與B不是互逆,A*B = K(mod C)==> A = B^(-1)*K( mod C ) 即 inv[ab] =inv[a]*inv[b];
Time of Update: 2018-12-04
不愧是我們的袁神,三分鐘搞定...題意不介紹了../*2773 Accepted 168K 0MS C++ 1030B 2012-12-14 21:12:23*/#include <cstdio>// 對n進行素因子分解, fac[0]記錄因子個數;int fac[10];void Div(int n){ int k= 0; for(int i=2; i*i<=n; ++i){ if( n%i==0 ) fac[++k]= i;
Time of Update: 2018-12-04
本題考察數論中的一個高斯函數的定理,明白了它,感覺它真的很精彩...定理:在 n! 中的標準分解式中質因數 p ( p<=n ) 的指數 h = [ n/p ] + [ n/p^2 ] + [ n/p^3 ]+.....題意:要你求 N! 計算後,從個位開始出現多少個連續的零...運用定理水解該題...思路找出 2 和 5 個數最小的一個..#include<iostream>using namespace std;int main(){ int n,t;
Time of Update: 2018-12-04
/* 題意:中文題 ...指數型母函數詳解神牛博文 : http://hi.baidu.com/nicker2010/item/fea0a5254208a30377272ced */ #include<iostream>#include<cmath>using namespace std;#define manx 13double a[manx],b[manx]; /// a[] 代表第一個式子的係數 long long num[manx];long long
Time of Update: 2018-12-04
兩兩互質的情況....如果不互質的話,那麼就成瞭解線性模餘方程了..先看神牛的吧,My Code好亂,主函數的輸入有些不一樣#include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef __int64 int64; int64 a[15],b[15]; int64 Extend_Euclid(int64 a, int64
Time of Update: 2018-12-04
這題沒什麼好說的...水題..#include<iostream>#include<cmath>using namespace std;#define manx 100009bool s[manx];int p[manx];int num;void prime(){ for(int i=0;i<=manx;i++){ s[i]=0; p[manx]=0; } for(int
Time of Update: 2018-12-04
咱們熟悉的四則運算運算式,中綴運算式,例如 (12+3)*2-6/2利用堆棧的方法把中綴運算式轉換成保值的尾碼運算式(又稱逆波蘭標記法),並最終變為電腦可以直接執行的指令,得到運算式的值 挺簡單的不假,也好理解,但就是一直無緣無故的卡著,卡的蛋疼……也不能說完全的無緣無故,其實是手生了吧,太生了……#include<stdio.h>#include<string.h>#include<stdlib.h>#include<stack>using
Time of Update: 2018-12-04
#include <iostream>using namespace std;//#pragma pack(1) //使用#pragma pack可以將對齊設定為1/*記憶體對齊的3個準則:1、結構體變數的首地址能夠被其最寬的基本類型成員大小所整除2、結構體每個成員相對於結構體首地址的位移量(offset)都是這個成員大小的整數倍,如有不足則補上3、結構體總大小為結構體最寬的基本類型成員的整數倍*/struct widget1{double d;//sizeof(double)==
Time of Update: 2018-12-04
蛋疼的說,如果出現不互質的情況,那就成解線性模餘方程組了神牛部落格地址: http://yzmduncan.iteye.com/blog/1323599/** 中國剩餘定理(不互質) */ #include <iostream> #include <cstdio> #include <cstring> using namespace std; typedef __int64 int64; int64 Mod; int64
Time of Update: 2018-12-04
求因子個數,很簡單,,求出每個質因子的個數,,然後簡單組合數學解決以下是網上摘的...想到了都是這樣寫的.../**************************************************首先我們知道x、y都是大於n的數 假設y=n+k (k>=1) 帶入1/x+1/y=1/n,求出x=n*(n+k)/k -> x=n^2/k + nx固然是一個整數,所以我們只要知道n*n/k為整數的k的個數(k絕對小於n的)即n*n的因子數。。。。
Time of Update: 2018-12-04
二叉樹,經典資料結構,應用廣泛一般來講二叉樹的重點在於遍曆,因為幾乎所有關於二叉樹的操作都可以通過遍曆解決,同時二叉樹的遍曆(先根,中根,後根)也有比較強的應用性(比如數學運算式求值)下面給出常規的遞迴做法,遞迴好處很明顯,代碼簡單易懂,代碼裡面的求樹的深度,節點數,葉子節點數,也都用的是遞迴的方法/**********************************************二叉樹常用操作:遍曆(前中後,以及逐層遍曆)遍曆是二叉樹到重點,其他到操作都可以通過遍曆完成*******
Time of Update: 2018-12-04
今天找了半天使用find函數的方法,發現都不怎麼使用,於是自己定義了一個函數 vector<CPoint>::const_iterator find_val(vector<CPoint>::const_iterator beg,//vector首地址 vector<CPoint>::const_iterator
Time of Update: 2018-12-04
HDU 1397題意:給你一個結論,要你證明:n = p1 + p2..#include<iostream>using namespace std;#define manx 40000bool s[manx];void prime(){ for(int i=0;i<=manx;i++) s[i]=0; for(int i=2;i<=600;i++){ if(!s[i]){ for(int j=2;
Time of Update: 2018-12-04
/*題意: 給你天數N(1 ≤ N ≤ 100,000),和每天需要花的錢(存放在數組中), 讓你把這些天分成M(1 ≤ M ≤ N)份(每份都是連續的天), 要求每份的和最大值盡量小,輸出這個和。分析:二分,用最大money[]為左端點,money[]總和為右端點...要求的結果一定在該範圍內.. 所以要求mid的最優值 時間複雜度為:n*lg(n)... */#include<iostream>#include<algorithm>#define
Time of Update: 2018-12-04
字典樹(TrieTree),常見應用於大量字串的儲存,統計,尋找等操作,由於字串的公用首碼沒有重複儲存,所以操作起來比較方便,效率很高,搜尋引擎的文本詞頻統計就是它的經典應用之一。HDU1251 統計難題題目要求計算一個給定字串在特定字元集中以某個單詞的首碼身份出現的次數,裸字典樹……CODE:#include<stdio.h>const int MAX = 26;typedef struct TrieNode{int nodeCount;struct TrieNode *next[