上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 26 下一页
摘要: 素数的测试: 费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1. 利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过 计算d=a^(n-1)%n来判断n的素性,当d!=1时,n肯定不是素数,当d=1时,n很可能是素数. 二次探测定理:如果n是一个素数,且0<x<p,则方程x^2%p=1的解为:x=1或 x=p-1. 利用二次探测定理,可以再利用费尔马小定理计算a^(n-1)%n的过程 中增加对整数n的二次探测,一旦发现违背二次探测条件,即得出n不是素数的结论. 如果n是素数,则(n-1)必是偶数,因此可令(n-1)=m*(2^q),其中 阅读全文
posted @ 2011-03-14 20:42 聊聊IT那些事 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 刚参加完HDUContest Ranklist,前所未有的纠结,也是前所未有的尝到了“不是努力的不够,而上效率的滞后”,一直在努力,一直期盼着能小试牛刀,一展身手。可谁想第一道题就给泼了冷水,貌似简单的面罩下隐藏着捉摸不透的不确定性因素,使劲浑身解数,最终以提交n次超时而结束,就这样抱着试试的心态开始看艰难的第二题。一看,简单! 当带着激动的心情迅速地拿出方案并顺利地写完后,这下总该给个a鼓励鼓励了吧,感觉是标准答案了,一提交,w; 后来改了数遍,也没想明白究竟是哪儿出了错,就在最后的十几分钟突然灵感一闪,原来错的很深啊,这也是这道题的关键所在,又是算法,又是效率。。。看来需要改进的地方还很. 阅读全文
posted @ 2011-03-13 16:43 聊聊IT那些事 阅读(358) 评论(0) 推荐(0) 编辑
摘要: View Code //超时了,艾~ 1 #include"iostream" 2 using namespace std; 3 char a[100005],b[100005]; 4 int i,j,k; 5 int L1,L2; 6 int sign=0; 7 int mark=0; 8 int start=0,end=0; 9 void Xun_huan() //实现一次循环10 {11 char ch=a[0];12 for(int q=0;q<=L1-1;q++)13 {14 a[q]=a[q+1];15 }16 a[L1-1]=ch;17 sign++; 阅读全文
posted @ 2011-03-13 08:05 聊聊IT那些事 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 转: 为了把0去掉,我们把所有的因数2和5都提出来,放到最后再处理。N!中的N个相乘的数可以分成两堆:奇数和偶数。偶数相乘可以写成(2^M)*(M!),M=N DIV 2。M!可以递归处理,因此现在只需讨论奇数相乘。考虑1*3*5*7*9*11*13*15*17*...*N(如果N为偶数则是N-1),这里面是5的倍数的有5,15,25,35,...,可以其中的5提出来,变成(5^P)*(1*3*5*7*9* ...),后面括号中共P项,P=(N DIV 5+1) DIV 2,而后面的括号又可以继续提5出来,递归处理.现在剩下的数是1*3*7*9*11*13*17*19*....这些数我们只需要 阅读全文
posted @ 2011-03-12 17:09 聊聊IT那些事 阅读(1863) 评论(0) 推荐(0) 编辑
摘要: http://acm.pku.edu.cn/JudgeOnline/problem?id=1423n!=(log10(sqrt(4.0*acos(0.0)*n))+n*(log10(n)-log10(exp(1.0)))+1);n==1除外 阅读全文
posted @ 2011-03-12 16:56 聊聊IT那些事 阅读(179) 评论(0) 推荐(0) 编辑
摘要: <本文中排序都是采用的从小到大排序>一、对int类型数组排序intnum[100];Sample:intcmp(constvoid*a,constvoid*b){return*(int*)a-*(int*)b;}qsort(num,100,sizeof(num[0]),cmp);二、对char类型数组排序(同int类型)charword[100];Sample:intcmp(constvoid*a,constvoid*b){return*(char*)a-*(int*)b;}qsort(word,100,sizeof(word[0]),cmp);三、对double类型数组排序(特别 阅读全文
posted @ 2011-03-12 16:52 聊聊IT那些事 阅读(401) 评论(0) 推荐(0) 编辑
摘要: View Code 1 /*给定一个八进制的小数题目要求你把它转换为十进制小数,转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零(即后置零). 我采用的方法是乘10然后对8取整(现在假设将p进制的小数转换为n进制,同样采用乘n取整:),每转换一位,都必须从最低位s[len-1]开始至小数的最高位(即小数点后的一位),每次计算积 g=a[j]*n+k(其中k为下一位积的进位),本位进位数 k=g/p,积在本位存入 s[j]=g%p;最后的整数k作为转换的一位存放于转换结果字符串中。*/ 2 #include"iostream" 3 #include" 阅读全文
posted @ 2011-03-06 18:43 聊聊IT那些事 阅读(412) 评论(0) 推荐(0) 编辑
摘要: View Code //POJ 3983 第二届顶嵌杯决赛A题 计算4个数等于24//搜索 数据较小,不用剪枝就过了//利用类似层叠那样,每运算一次,就合并两个数,所以少一个数,每次计算的值都保存在curVal中//注意浮点数1/3 *3 会等于1//格式化输出时用到sprintf,挺不错的#include<stdio.h>#include<string.h>#include<math.h>#define bool intint option[5];int order[5];float number[5];float curVal[4][5];//输出时用到 阅读全文
posted @ 2011-03-04 16:33 聊聊IT那些事 阅读(680) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/luxuejuncarl/archive/2007/05/03/1595192.aspx(借鉴)~**~View Code 函数的调用会花掉很多时间。定义一个数组,充分利用数组的下标和值。如int a[1000],把下标和值都利用上。#include<iostream>using namespace std;#define MAX 10003int main(){ int i, b, sum, a[MAX]={0}; for(i=1; i<MAX; i++) { b = sum = i; while(b) { sum += b % 1 阅读全文
posted @ 2011-03-03 20:55 聊聊IT那些事 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 一直在学习汇编,感觉很重要吧,这段时间都无暇顾及acm这块了,感觉又落下了不少。快期末考试了,也着急了吧,真需要开始铆劲学了,还有好多事要做,现在的感觉一个字-----乱。一些身边发生的事和一些自己正在经历着的事让自己思想乱糟糟的。 现实总是和理想时不时的出现摩察,其实这也是现在每个人的生活状态吧,也成了一种自然规律了,理想很美好,但现实很残酷。而最终的结果就是:不在现实中灭亡,就在现实中爆发。承受不住现实之痛,那只有被现实所吞噬。选择什么,谁都帮不了你,因为未来的路是要你一个人走的,即使现在不是,但总有一天会是这样的,总有一天,我们会变得独立,我们会一个人去闯事业,我们会一个人承受那些比现 阅读全文
posted @ 2010-12-26 19:25 聊聊IT那些事 阅读(338) 评论(1) 推荐(2) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 26 下一页