PAT练习
gityya
这个作者很懒,什么都没留下…
展开
-
快速幂
快速幂给定三个正整数a、b、m(a<109, b<1018,1<m<109),求ab%m。显然使用简单的循环来写是不行的,这里要使用快速幂的做法。快速幂基于二分法的思想。如果b是奇数,那么有ab=a*ab-1。如果b是偶数,那么有ab=ab/2*ab/2。这样在log(b)级别的转换后可以将b变成0,即a0=1。typedef long long LL;...原创 2020-03-10 10:51:41 · 80 阅读 · 0 评论 -
随机选择算法相关问题
随机选择算法相关问题给定一个整数组成的集合,集合中的整数各不相同,现在要将它分为两个子集合,使得这两个子集合的并为原集合、交为空集,同时在两个子集合的元素个数n1与n2之差的绝对值|n1-n2|尽可能小的前提下,要求他们各自的元素之和S1和S2之差的绝对值|S1-S2|尽可能大。求|S1-S2|。使用随机选择算法的原理就是,求这个整数集合的第n/2大,同时根据这个数把集合分为两个部分,使得其中...原创 2020-03-06 19:07:10 · 216 阅读 · 0 评论 -
木棒切割问题
木棒切割问题给出N根木棒,长度均已知,现在希望通过切割它们来得到至少K段长度相等的木棒(长度必须是整数),问这些长度相等的木棒最长能有多长.例如三根长度分别为10,24,15的木棒,假设K=7,即需要至少7段长度相等的木棒,那么可以得到最大长度为6.这里我默认为木棒长度有序,二分答案即可.#include <iostream>#include <cstdio>#...原创 2020-03-06 19:00:36 · 508 阅读 · 0 评论 -
N皇后问题
N皇后问题N皇后问题是指在一个N*N的国际象棋棋盘上放置N个皇后,使得这N个皇后两两均不在同一行、同一列、同一条对角线上,求合法的方案数。考虑每行每列只能放一个皇后,那么如果把n列皇后所在行号依次写出,那么就会是一个1~n的排列.只需查看排列是否合法即可.#include <cstdio>#include <cstdlib>#include <cmath>...原创 2020-03-06 18:55:34 · 132 阅读 · 0 评论