摘要:由于x取任何值都需要能被65整除.假设f(x)成立的基础上,证明f(x+1)也成立.那么把f(x+1)展开(使用二项式),然后提取出5*x^13+13*x^5+k*a*x(即f(x))。若f(x+1 )=f(x)+y能被65整除,只需要除y能被65整除.那么也只要求出18+k*a能被65整除就可以...
阅读全文
摘要:一道规律题目,同题目Rightmost Digit一样的性质,较易。 #include int main(){ int v,result,circle; __int64 a,b; while(scanf("%I64d%I64d",&a,&b)!=EOF) { ...
阅读全文
摘要:题目理解一下就是求二分图的最大独立集。而二分图的最大独立集数=节点数(n)— 最大匹配数(m)。所以关键在于求二分图的最大匹配数。 二分图的最大匹配数可以使用匈牙利算法解答,其理论依据为:http://www.cnblogs.com/AdaByron/articles/2200978.html #...
阅读全文
摘要:大数乘法,过不了只能说明测试用例不完备。贴几组测试用例: 5.1004 15 41120989454.314570363993506408035342551967503175087477761156936917581824 000.10 20 .00000000000000000001 12....
阅读全文
摘要:使用变量记录开始反转的位置,很不错的方法。 #include using namespace std;int main(){ int t; cin>>t; getchar(); while(t--) { char a[1001]; cin....
阅读全文
摘要:纯粹的找规律的题目。N的次方的结果的末尾数是有循环的,且所有的循环的大小不大于四,所以有以下解法。 #include int main(){ int num,result; __int64 value; scanf("%d",&num); while(num--) ...
阅读全文
摘要:同样使用lg值计算最高位。任意一个数都可以表示为科学计数法的性质,即N^N=a*10^x,所以最高位就是a的整数部分。 1.怎样去除10^X呢? 取lg的对数然后去除整数部分,然后将小数部分再取10的指数得到的值就是a。 2.怎样去取最高位。对a取整即是。 所以有代码: #include #inc...
阅读全文
摘要:简单的题目,我的解法采用预处理,然后使用折半查找返回答案。 #includedouble answer[300];int len=0;double num;int binarySearch(){ int l=1,r=len,half; while(l=5.20) ...
阅读全文
摘要:起始的时候是按照上下左右进行搜索的,然后不幸栈溢出。参考别人的实现才发现,原来迷宫还可以以索引为深度进行搜索。更改之后果断AC。由于搜索的时候是自左而右、自上而下的放置的,所以判断是否可以放置时,只需要判断左上的部分即可。 #include char maze[6][6];int num,resu...
阅读全文
摘要:题目比一般的图类的题目稍微绕了点弯子。要根据问题建立解题所需要的图。起始点@和终止点using namespace std;#includeint width,height,jewelsNum;struct Point{ int col,row,value;};struct Map{ ...
阅读全文
摘要:直接的大数相乘问题,无话可说。 #include#include using namespace std;#define DEEP 1000000000void mul(__int64* s,int a){ int assist=0; for(int j=1;j0) { ...
阅读全文
摘要:典型的母函数题目,所以无话可讲。直接套用公式求解即可。 //#include #include using namespace std;int main(){ //fstream cin("Ignatius and the Princess III.txt"); unsigne...
阅读全文
摘要:如果知道STL函数库中的next_permutation函数,此题丝毫没有难度。然后可以反复调用此函数即可。我在此基础上做了优化。因为第N!th的序列都相当于将序列的后n位逆序排列。所以可以在调用next_permutation函数之前,优化前N!次调用(N!#include using name...
阅读全文
摘要:题目倒是简单,只不过要记录走过的路径和输出时候的特别格式让人很纠结。我使用指针记录父节点的数据,当找到解答的时候就根据指针反向遍历整个路径,并将路径上得节点压入栈中。在输出位置依据格式出栈输出即可。 #include #include using namespace std;#include#in...
阅读全文
摘要:火车调度的可行性满足卡特兰数,所以可以直接用卡特兰数的递推公式解题。由于题目N的范围是1~100,所以需要使用大数计算。卡特兰数的递推公式为: F(n)=F(n-1)*(4n-2)/(n+1) #include #define DEPTH 10000;int a[101][16];void ktl...
阅读全文
摘要:字符串编码,无话可说,直接上代码。 #include#include using namespace std;int main(){ int Num; cin>>Num; for(int i=0;i>str; length=str.length(); ...
阅读全文
摘要:此题需要一些小小的数学知识。lg(N!)=lg(1)+lg(2)+…+lg(N)。而一个数的位长也刚好是其lg值+1。所以有以下代码: #include#includeint main(){ int caseNum,end; double result; scanf("%d",&c...
阅读全文
摘要:简单的深度优先搜索,但是需要注意尾节点与首节点之和同样必须为素数。 View Code 1 #include 2 #include 3 #include 4 5 int num; 6 int result[21]; 7 bool visited[21]; 8 bool pr...
阅读全文
摘要:题目不具有单调性,所以求导可以忽略。考虑参数在有限的可选值之中,所以可以选择了深度优先。确定搜索变量为5个参数,然后进行深度优先搜索,并在深度为5时终止搜索,判断状态。 View Code 1 #include 2 #include 3 using namespace std;...
阅读全文
摘要:最近点对问题定义:已知上m个点的集合,找出对接近的一对点。 在二维空间里,可用分治法求解最近点对问题。预处理:分别根据点的x轴和y轴坐标进行排序,得到X和Y,很显然此时X和Y中的点就是S中的点。 情况(1):点数小于等于三时: ...
阅读全文
摘要:一维度的动态规划题目,只需要一个临时变量记录当前最大值即可。起始点与终点的记录算是很巧妙,增加两个变量达到目的。 View Code 1 #include 2 3 int main() 4 { 5 //freopen("Max Sum.txt","r",stdin);...
阅读全文