九度OJ
文章平均质量分 70
xianyafu
这个作者很懒,什么都没留下…
展开
-
题目1104:整除问题
原题链接:http://ac.jobdu.com/problem.php?pid=1104对n!以及a进行分解质因素,如果a的质因素的幂小于等于n!的质因素的幂,则可以整除。求符合要求里最大的。1.求1-1000之间的素数 素数筛法,获得一个素数时,将它的所有倍数标记为非素数。 当遍历到一个数时,没有被任何小于它的素数标记为非素数,则确定其为素数。void ini1原创 2016-05-10 09:50:31 · 662 阅读 · 0 评论 -
二分求幂
一种n次方的方法。避免数值过大存储空间不够。求A的B次方的后三位(基本代码) int ans = 1; while (b != 0){ if (b % 2 == 1){ ans *= a; ans %= 1000; } b /= 2; a *= a; a %= 1000; }原创 2016-05-12 11:11:08 · 285 阅读 · 0 评论 -
题目1138:进制转换 (大数据10进制到2进制)
题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入: 多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)输出: 每行输出对应的二进制数。样例输入: 0138样例输出: 01111000//思路: 十进制数位数超过30位,数原创 2016-05-05 16:32:47 · 4302 阅读 · 0 评论 -
进制转换心得
1.首先判断要转换数值的大小 i nt 2147483648~2147483647 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 更大的数需要利用字符数组来进行处理 char[ ]2.N进制转换到M进制(N、M不等于10) 先转换到十进制,再进行下一步转换。原创 2016-05-06 09:25:06 · 1584 阅读 · 0 评论 -
过大数据处理
遇到无法用当前数据类型表示的数的时候,利用数组进行处理,按四位数一个单元保存数值struct bigInteger { //高精度整数结构体 int digit[maxDigits]; int size; void init() { //初始化 for (int i = 0; i < maxDigits; i++) digit[i] = 0; size = 0; } void原创 2016-05-17 14:58:07 · 385 阅读 · 0 评论 -
特殊数求解(最大公约数/最小公倍数/素数)
1.最大公约数(GCD) (1)如果a,b全为0,GCD不存在 (2)如果a、b其中之一为0,则GCD为a、b中非零的那个 (3)如果a、b都不为0,则使新的a=b,b=a%b,然后重复过程。非递归int gcd(int a, int b){ while (b != 0){ int t = a%b; a = b;原创 2016-05-09 16:56:41 · 676 阅读 · 0 评论 -
畅通工程——kruskal+并查集
1.并查集定义树:int Tree[101];数组中存放前驱结点,根节点为-1寻找根节点:int findroot(int k){ if (Tree[k] == -1) return k; else{ int tmp = findroot1017(Tree[k]); Tree[k] = tmp; ret原创 2016-06-06 21:37:17 · 272 阅读 · 0 评论