在判斷素數的基礎上運用快速冪判斷是否:a^p = a (mod p),是則輸出yes,不是輸出no。
#include
#include
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using
namespace std;
typedef
long
long ll;
int p, a;
intpd
(int n)
ll qpow
(ll m, ll k, ll p)
return res;
}int
main()
return0;
}
這個題是典型的快速冪的應用,簡單適當地運用快速冪即可通過。
#include
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using
namespace std;
typedef
long
long ll;
int t, m, h, a, b, num;
ll pow
(ll m, ll k, ll p)
return num;
}int
main()
cout << num <<
'\n';}
return0;
}
資料比較大,運用快速冪。求用公式2^(n-1)-1求非空子集個數
#include
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using
namespace std;
typedef
long
long ll;
int n, t;
ll pow (ll m,ll k,ll p)
return num;
}int
main()
return0;
}
這道題是聽同學講的,總錢數為x,乙個人分的錢是n,那麼其他的人就是x-n,若n>x-n,那麼就要輸出這個人的工號了。
#include
#include
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using
namespace std;
typedef
long
long ll;
int n, x, arr[
10005
], fly;
intmain()
for(
int i =
1; i <=
10000
; i ++)}
if(fly) cout <<-1
<<
'\n';}
return0;
}
運用快速冪求次方,再對10取餘就可。
#include
#include
#include
using
namespace std;
typedef
long
long ll;
int n , x;
ll dpow (ll m,ll k,ll p)
return res;
}int main (
)return0;
}
和e題類似,運用快速冪求a的b次方,在對1000取餘。
#include
intfastpow
(int a,
int b,
int k)
b >>=1;
a= a*a%k;
}return ans;
}int
main()
return0;
}
找零的個數的方法:乙個零可以分為5*2,即想知道末尾存在幾個零,只需知道末尾有幾個五。運用二分查詢找出五的個數即可。
#include
#define ios ios::sync_with_stdio(false);
using
namespace std;
typedef
long
long ll;
int t, q, flag, x, l, r;
ll check
(int m)
return cnt;
}// 檢查m的階乘裡有多少個5,即階乘後零的個數
intbsearch
(int l,
int r)
return l;
}// 二分法 ,確定上下限、搜尋是否有符合條件即階乘結果含q個零的mid
intmain()
return0;
}
#include
#include
#include
#include
#define pi acos(-1)
using namespace std;
typedef long long ll;
const ll maxn = 1e6 + 10;
int t, n, f;
double arr[maxn];
bool judge(double x)
return cnt >= f;
}int main()
l = r / f;
while (r - l > 1e-5)
printf("%.4lf\n", l);
}return 0;
}運用二分查詢,不難找到x的值
#include
#include
using
namespace std;
int t, y;
double x, l, r, mid, flag;
double
check
(double x)
intmain()
elseif(
check
(mid)
> y)
r = mid;
else l = mid;}if
(flag ==-1
)printf
("no solution!\n");
else
printf
("%.4lf\n"
,flag);}
return0;
}
二分題,先做字首和,,再用二分查詢子串行的終點,取最小長度即可。
#include
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using
namespace std;
int t, arr[
100005
], n, s, flag;
intmain()
if(flag == n +1)
cout <<
0<<
'\n'
;else cout << flag <<
'\n';}
return0;
}
公開課,演算法導論筆記 自用)
一 演算法,是軟體的根本要素,如貨幣可購買商品一樣 演算法可以獲得軟體的其他方面的提公升 演算法的學習應先從分析已有的演算法開始,二 排序為演算法中最傳統的基礎的演算法 2.1插入排序 a j 將定位的j位置元素向前移動判斷插入位置,使得該陣列的前半部分有序 j取值從第二個元素開始,直到最後乙個 如...
普林斯頓公開課 演算法2 7 棧
棧和佇列都是乙個元素的集合,都能提供增加 刪除 迭代 判斷是否為空4個操作。在棧中,刪除操作刪除的是最後新增的元素。在佇列中,刪除操作刪除的是最早新增的元素。push pop isempty 將乙個鍊錶中第乙個節點刪掉,並將第二個節點設為首節點。將新的節點加入到鍊錶的頭部。在最壞情況下,每個操作的複...
AI公開課丨李楠博士帶你入門整合學習(第二期)
整合學習方法,一直是整個機器學習領域的 常青樹 受到學界與業界的廣泛關注。隨著南京大學周志華教授的專著 整合學習 基礎與演算法 中文版上市,讓我們能夠有機會系統的學習這一經典的機器學習方法。為了更好的幫助廣大讀者們學習 了解整合學習,博文視點學院聯合機器之心,特邀 整合學習 基礎與演算法 一書譯者李...