数论 数的一些处理
文章平均质量分 61
zxy_snow
这个作者很懒,什么都没留下…
展开
-
hdu 2446 Shell Pyramid(GOD = =)
开始想打表二分来着,后来想试试能不能推出来公式,结果还真推出来了 = =,很简单的公式。第n-1堆的最大的序号是,(n*n*n - n)/6。然后对n*6开立方根可以得到n(细节细节)。。。再找到这一堆的大小(细节细节)。。再根据1+2+3。。。求和公式找到第几行原创 2011-08-26 10:45:43 · 1398 阅读 · 0 评论 -
zoj 1284 || poj 1528 Perfection
<br /> <br />看着是打表题。开始写的打表的算法有点慢,跑1秒多才出来答案,就想把表直接列出来,结果超过提交限制了 = =。。<br /> <br />后来想起来筛法了,好多数论题都用类似筛法的方法了。把所有数都赋值为1,从2开始,2的倍数+=2.。。3的倍数+=3.。。<br /> <br />WA了一次,1的话应该是不算自身的,所以加和为0。。<br /> <br />#include <cstdio>#include <cstdlib>#include <iostream>#in原创 2011-02-15 16:34:00 · 1246 阅读 · 0 评论 -
zoj 2520 Amicable Pairs
<br /> <br />亲和数。在好玩的数学上看过耶~<br /> <br />就是比如220的因子和(不带它本身)为284,而284的因子和是220,这就是一对亲和数~<br /> <br />以前不明确题目中的k就没敢做。<br /> <br />今天见SK空间里有这题,暴力了,那我也暴吧 = =。。<br /> <br />方法不好,跑了十几秒才跑出来10几对 = =。。。才10W以内。<br /> <br />搜的方法用的类似筛法的方法好神奇啊~!<br /> <br />这个代码跑表。。。<br原创 2011-02-13 21:34:00 · 1381 阅读 · 0 评论 -
zoj 3468 Dice War
<br /> <br />今天zoj月赛。<br /> <br />回来都3点了。。看了下E搜了下,TLE了,就看B。。。<br /> <br />B就是,给你骰子n,m。求n个骰子的加和大于m个骰子加和的概率。<br /> <br />自己用笔模拟了半天。。。决定用循环。<br /> <br />8个循环 嘻嘻。。。<br /> <br />虽然是结束后交的。。。那个double的好纠结。。。中间还溢出了。。只能加一下除一下。。。<br /> <br />然后经lzs同学提醒。。可以用递归哈。。。又写了个原创 2011-02-13 18:32:00 · 984 阅读 · 3 评论 -
zoj 1657 || poj 2262 Goldbach's Conjecture
<br /> <br />zoj和poj这题居然还不是太一样。。不过做法都一样。<br /> <br />先打素数表,开始我是弄了两重循环去判断是否想加等于i,后来想到,只要判断i-pre[k]是否是素数就好了,而这个表筛法已经筛出来了,答案很快就出来了,我也不用打表了。。。<br /> <br />poj是把差值最大的两个加数输出,直接输出第一对即可。<br /> <br />zoj<br />#include <cstdio>#include <cstdlib>#include <iostrea原创 2011-02-12 16:45:00 · 1002 阅读 · 0 评论 -
zoj 1239 Hanoi Tower Troubles Again!
<br />黑书上的题,今天随便看题居然看到了。。。<br /> <br />黑书上是用二分图的最小路径覆盖来理解这题的,用最小路径覆盖求得后,发现,这个解满足一个公式,我就直接套公式A掉了 = =。。<br /> <br />后用最大匹配做,发现是基本不能做的,因为是倒着匹配的,等于说是,已知有N个柱子,然后找一个数满足最大,等于说是需要枚举这些个数的,啊,我表示压力很大。。。<br /> <br />再者就是,用最大二分匹配打表,从p = 1开始,刚才试了N久,终于打成功了,不过TLE了。。。= =。。原创 2011-03-02 16:59:00 · 1219 阅读 · 0 评论 -
zoj 1312 || poj 1595 Prime Cuts
给你数n c,求在1-n中的素数,如果这个素数序列为奇数,求中间c*2-1个素数,偶数则求c*2个素数。很基本的,先打表,然后我的做法是,把最开始那个表素数里存成纯素数表中的编号,然后下面就简单了,细节处理注意一下就好了。#include #include #include #include #include #include #include #include #include #define MAX 30000using namespace std;int p原创 2011-03-02 16:22:00 · 1883 阅读 · 0 评论 -
zoj 1489 2^x mod n = 1
给你n求最小的x使之满足这个式子。用笔模拟了下,发现偶数和1(x不能为0呀,如果为0那所有结果都可以为0.。。)可以排除在外了。。。至于奇数是不是一定有解呢??问党姐姐。。。数论女神。。恩。。。他说奇数一定有解。。因为互质保证2有逆元。。2*2的逆元结果就是1(所谓的幺元)神马神马的。。。表示看不懂。。恩。。中间需要 %= 因为直接*2会溢出滴。。。根据 (x*y) % n == (x%n) * (y%n)%n最喜欢数论题目的长度啦~~#include #include #include #in原创 2011-02-26 11:42:00 · 1786 阅读 · 0 评论 -
zoj 2124 || poj 1730 Perfect Pth Powers
<br /> <br />数论,求使得 x = b^p的最大的p。<br /> <br />这题之前用pow神马的,一直过不了。昨天看到了,有个想法,想试试。<br /> <br />先求质因数,质因数每个的个数肯定和p有关。<br /> <br />求出之后,想了想,呀,这不就是求这些质因数重复个数的最大公约数嘛!!!激动~!<br /> <br />写了 = =。。WA。但是数据都能过。还用了long long也过不了。搜了下,说这题有负的数据,FT!!!<br /> <br />改了改。如果是负数的话原创 2011-02-01 12:22:00 · 1509 阅读 · 4 评论 -
zoj 2952 Find All M^N Please
找出可以形为 m^n的数。。。筛法喽。到2^31不到5W个数,然后存到数组里,排下序即可。我后来想能不能直接打表啊,开始没这么做是因为int肯定装不下,试试char型的打表,不行,可以编译,但是运行不了,bool型的也是,提交后返回CE:collect2: ld terminated with signal 24 [CPU time limit exceeded] = =。。第一次见这种信息。。。直接打表的话,超过提交限制了 = =。。#include #include #include #in原创 2011-01-30 16:45:00 · 1439 阅读 · 0 评论 -
zoj 1439 Area Ratio
<br /> <br />给你空间三角形,求出内切圆与外接圆面积之比。<br /> <br />三角形怎么着也是个平面,所以空间神马的不用考虑。先求出边长。<br /> <br />由公式<br /> <br />内切圆:S = 1/2(a+b+c)*R ;<br /> <br />外接圆:1/2*absinC = S ,c/sinC = 2R.<br /> <br />S由海伦公式求得,详见海伦公式<br /> <br />面积之比即半径平方之比。<br /> <br />#include <cstdio原创 2011-01-30 09:53:00 · 1105 阅读 · 0 评论 -
数学公式——海伦公式
<br />昨天晚上做了一道关于求三角形内切圆与外接圆面积之比的一道题。搜外接圆半径公式的时候搜到了海伦公式,就学习了下。<br /> <br /><br /> <br /> <br /> <br />用几何画板画的,用FW小处理下~自我感觉还不错~<br /> <br />下面的这个证明摘自百度百科。这个证明大家应该都可以自己证出来。记住做题很有用,不用自己再推导了。<br /> <br />证明<br /> 与海伦在他的著作"Metrica"(《度量论》)中的原始证明不同,在此我们用三角公式和公式变形原创 2011-01-30 09:48:00 · 5971 阅读 · 0 评论 -
数论——模运算
<br />今天LZS问我一道数论题,我就翻了翻算导。。。把模运算的除法给看了下,感觉不错~<br /> <br />一些结论<br /> <br /> (a+ b) % n = (a % n + b % n) %n <br /> <br /> (a - b) % n = (a % n - b % n) %n <br /> <br /> (a * b) % n = (a % n) * (b % n)% n <br /><br /> a原创 2011-01-28 20:27:00 · 3256 阅读 · 2 评论 -
zoj 2545 || poj 2661 Factstone Benchmark
<br />嘻嘻,最喜欢这种题啦。<br /> <br />给你年代,求得最大的n,使得n的阶乘在那个年代的整型范围内。<br /> <br />1960是4-bit的。每十年位数增长一倍。<br /> <br />直接从1开始往上*=2,k从1开始,如果大于k,/= k ,k++,继续这样下去。。。就OK了。。1A,嘻嘻,zoj好几天没做了。。。<br /> <br />#include <queue>#include <stack>#include <math.h>#include <std原创 2011-03-06 14:48:00 · 1365 阅读 · 0 评论 -
zoj 2185 || poj 1969 Count on Canton
1/1 1/2 1/3 1/4 1/5 ...2/1 2/2 2/3 2/43/1 3/2 3/34/1 4/25/1In the above diagram, the first term is 1/1, the second term is 1/2, the third term is 2/1, the fourth term is 3/1, the fifth term is 2/2, and so on.也就是按 1/1 1/2 2/1 3/1 2/2 1/3。。。排序。。。规律很明显。分子都是 1原创 2011-02-15 14:09:00 · 1488 阅读 · 0 评论 -
hdu 2451 Simple Addition Expression
真如这题的discuss里说的,细节决定成败……&*%……&*%&*……&*&*#¥@太恶心了。。。做了好久!最后打表都一样提交WA,不支持long long的缘故= =。。。有的地方没改成__int64 = =。。。其实这题就是问你比N小的数是任意位都小于等于 3原创 2011-08-25 14:03:58 · 940 阅读 · 0 评论 -
hdu 2896 病毒侵袭
算是AC自动机水题吧。找到哪几个网站带病毒,跟上个题不同的时候,算过的id 不可以赋值为-1 = =。。。因为下面的网站还要匹配呢。空格到底算不算可见字符捏???经测试,这个输入没有字符串中间带空格的。。。T T。。然后sort,unique去重即可。。#incl原创 2011-08-22 17:56:17 · 1568 阅读 · 0 评论 -
hdu 3123 GCC
09武汉网选水题= =。。因为比m大的数阶乘后%m肯定为0,所以只要算比m小的数的阶乘和%m即可。#include #include #include #include #include #include #include #include #incl原创 2011-08-19 12:38:13 · 1217 阅读 · 0 评论 -
hdu 3927 Math Geek
反幻方。见求法,http://w3.math.sinica.edu.tw/math_media/d164/16419.pdf知道就水了= =。。我还推了好久好久 T T 。。#include #include #include #include #in原创 2011-08-09 18:40:21 · 1232 阅读 · 1 评论 -
hdu 3835 R(N)
下午做了昨天的多校联合比赛。。。小写下题解。把一个数分解为 N = X^2 + Y^2 .N X Y都为整数。直接枚举,枚举X,然后通过N算出Y,看Y是否为整数。因为可以为负数,所以考虑X Y相等还有任意一个为0的情况,这几种都是4种的,其他都是8种。#include #inc原创 2011-07-13 19:41:09 · 1122 阅读 · 0 评论 -
ural 1049. Brave Balloonists
<br />给你十个数,求这个十个数的乘积有多少个因子N,求N的个位数是多少。<br /> <br />直接求每个数的质因子,然后比如2的个数有5个,3有2个,那么N = (5+1)*(2+1)。详见白皮书P184,还是党姐说的Orz个~<br /> <br />为防止溢出,乘下在%10即可~<br /> <br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>原创 2011-05-18 18:19:00 · 1314 阅读 · 0 评论 -
ural 1104. Don’t Ask Woman about Her Age
<br />给你一个未知进制表示的数(小于等于36进制,长度最长100W),求一个进制,使得这个进制的这个数可以整除进制-1.<br /> <br />比如样例,22进制的A1A可以整除21.<br /> <br />我没多想,直接拿大数做了。。。只需要判断是否能整除,所以还是好写的,不过以前只写过除2的,其实都一样~~~<br /> <br />后来btw说他的方法了,因为这个数等于 b*x+a,所以它模(b-1)就是(x+a)%b。。。自己想下就好了。。。T T。。<br /> <br />不过写出来大原创 2011-05-18 23:08:00 · 1709 阅读 · 2 评论 -
ACM-HeNan Group Contest 1 - B 比赛
<br />题目 http://acm.nyist.net/JudgeOnline/problem.php?cid=26&cpid=2<br /> <br /> <br />采用幻方的做法,就是从已经输入的那一列开始填,从第一个数开始,右下角的数和它添相等的数,超出矩阵就返回到下一行第一列。。就这么下去。。。<br /> <br />开始没仔细想,快结束了,才在纸上画画。。。发现规律,果断A之。。<br /> <br />这次比赛就出了一题,太崩溃了。。。T T。。。<br /> <br />以后任重而道远原创 2011-03-18 22:39:00 · 929 阅读 · 0 评论 -
zoj 2286 Sum of Divisors
<br />姐给我找的数论水题。<br /> <br />题目是,给出一个数字,求出在100W内因子和不超过这个数字的数的个数。因子和不包括它本身。<br /> <br />很显然的方法,打表,然后判断。<br /> <br />打表是用类似筛法打的,初始值都赋为1(都是1的倍数),就是2加到2的倍数上,3加到3的倍数上就这么下去。。。。。因为只要求个数,然后排下序就好了。<br /> <br />开始用二分,二分没写对,一直出不来结果,后来把答案全打出来了,300+W个数。。。悲剧,机子卡死机了。<br原创 2011-02-23 08:44:00 · 1054 阅读 · 0 评论 -
The 9th UESTC Programming Contest Warmup 1 A B D E
<br /><br /><br />出了4题,rank 37<br /> <br />A ,水题,看字符串里有多少个TTT, TTH, THT, THH, HTT, HTH, HHT and HHH<br /> <br />1A<br />#include <queue>#include <stack>#include <math.h>#include <stdio.h>#include <stdlib.h>#include <iostream>#include <limits.h>原创 2011-03-12 23:10:00 · 1548 阅读 · 2 评论 -
zoj 1910 || poj 2363 Blocks (感谢党姐做的数论水题。。。)
<br />我们JAVA小组的队名~~~Follow The Party <br /> <br />跟党走,简称FTP,哈哈。。。<br /> <br />看党过题了,数论题,题目蛮短的,嘻嘻。。。打表过了~~<br /> <br />给出几个1*1*1的立方体,求最小的他们能组成的方体的表面积。<br /> <br />直接枚举,因为任何n个小立方体,设组成方体的长宽高是 a ,b,c,那么 a*b*c就是n,这个不解释。然后最最小的面积和,就是 2倍的 a*b+b*c+a*c即可。<br /> <br原创 2011-03-09 16:27:00 · 1837 阅读 · 0 评论 -
Codeforces Beta Round #60-B
<br />给你四位数,最多改变其中每个数的一个数字,是否能按非递减排序。<br /> <br />改变后的数字是大于等于1000小于等于2011的。<br /> <br />昨晚没过。。。 = =。。今早又想了会儿,改改,刚才提交过了 = =。。。<br /> <br />我是打表了,把每个数字能改变的的都放到表里,然后按从小到大排列,然后找最小的满足题意的。<br /> <br />比如 1000 找改变一个数字最小的,下一个数字找比上个数字大但是依然在改变中最小的。。就这么下去。。。<br /> <b原创 2011-03-06 12:05:00 · 855 阅读 · 0 评论 -
zoj 1152 A Mathematical Curiosity
<br /> <br /> <br />水题。 = =。<br /> <br />就是输入挺麻烦。一直WA。我想了想,不会超界吧,m+a*a+b*b。。改成long long依然WA。。<br /> <br />实在没办法了 = =。。搜了下 = =。。。丫丫的。。。题目没说每个输出块的case都从1开始啊!!!BT!!!<br /> <br />long long过了,又改成int也过了,cin cout 140MS = =。很多用C的 100MS。。cin cout 就是慢啊。。<br /> <br /原创 2011-01-29 13:31:00 · 1484 阅读 · 0 评论 -
zoj 2679 Old Bill
<br />水题。<br /> <br />给你N _abc_ 空缺两个数字,求最大的能整除N的五位数。。。<br /> <br />没啥好方法,从9到0俩循环即可。。<br /> <br />水题。<br /> <br />用cin cout 170MS 改scanf printf 10MS。。。差距啊。。<br /> <br />今天终于A了一道了。。。嘻嘻。。虽然很水吧。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <原创 2011-01-27 22:11:00 · 988 阅读 · 0 评论 -
zoj 2358 || poj 1775 Sum of Factorials
<br />这水题,折腾了好久 = =。。给你一个数,判断它是否是 i 个(i>=1)阶乘的加和。<br /> <br />我第一反应是打表,10!已经超过100W了,所以到9!就可以了。把这10个数(0!== 0 )存下(代码1),然后用深搜算出来这10个数所形成的组合(代码2),然后直接打表就OK了 = =。。。<br /> <br />纠结时间长错误一是,标记数组开成10了 = =。。。我是从下标1开始算的。。。YM了半天。<br /> <br />错误二是,n小于0结束我写成n=-1结束了,YM死了原创 2011-01-26 14:45:00 · 2111 阅读 · 0 评论 -
zoj 2829 Beautiful Number(水~)
每个被3或者5整除的数被称为Beautiful Number,给你编号N,让你求出第N个这样的数。直接打表过了。。这次学聪明了,不用cin,cout了。。#include #include #include #include using namespace std;int num[220000];int ind[100001];int main(void){ int n; memset(num,0,sizeof(num)); for(int k=1; k*3原创 2010-11-13 21:58:00 · 2107 阅读 · 2 评论 -
zoj 1730 || poj 1455 Crazy Tea Party(= =)
<br />开始不会写,看人家思路了 = = YM.。<br /> <br />按照冒泡排序的思想,时间为n*(n-1)/2<br /> <br />因为是个环,可以将n分成两部分进行排序。<br /> <br />然后将时间累加即可 = =。。。。啊呀呀。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int main原创 2010-11-07 13:48:00 · 1485 阅读 · 0 评论 -
zoj 1597 || poj 2546 Circular Area(数学题)
给你俩圆的圆心坐标,半径,求俩圆相交面积。分,相交,相离,内含。纯数学题。根据边长求cos值差点想不起来。。。本来想用积分做的,发现,积分忘光了 = =。。。就用扇形面积减去三角形面积就好了,注意,不能乘2,因为被公共弦分开的两部分不一定是对称的。π要取 3.141592654...以上。。。小数点后位数不够的话会WA死的 = =。。。#include #include #include #include #include #define pi 3.141592654 //这个小数原创 2010-12-29 10:47:00 · 1278 阅读 · 0 评论 -
zoj 3437 Very Hard Problem( = = )
<br />这个 前天比赛的时候,党和BTW都WA了好多次。。。<br /> <br />出错点在没考虑,LLONG_MIN 的负数是LLONG_MAX+1,超过了LLONG_MAX的范围,所以这里要用无符号数,特殊处理下就OK。<br /> <br />膜拜watashi大牛。。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <limits.h原创 2010-12-21 18:07:00 · 822 阅读 · 0 评论 -
zoj 2835 Magic Square(水~)
<br />幻方~判断是否是幻方。<br /> <br />注意,幻方的话数字不能重复。<br /> <br />真是充分用了goto语句。。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int map[15][15];int main(void){ int n,a[1005]; int sum,temp原创 2010-12-08 17:59:00 · 1258 阅读 · 4 评论 -
zoj 1938 || poj 2249 Binomial Showdown(求二项式系数)
<br />就根据那个公式Cnk = n!/(k!*(n-k)!)<br /> <br />而且 Cnk == Cn(n-k)如果k > n-k k = n-k 不加这个的话会超时。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>using namespace std;int main(void){ long long int n,k; // Mu原创 2010-12-09 23:09:00 · 1262 阅读 · 3 评论 -
07年 ZZUPC校赛第二题 津津的储蓄计划(水 ~)
ProblemB:津津的储蓄计划【问题描述】 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。 例如11月初津津手中还有83元,妈妈给原创 2010-12-08 12:11:00 · 1344 阅读 · 0 评论 -
zoj 1871 || poj 2590 Steps(数学题 = =)
<br />看这题,第一反应是,广搜嘛。<br /> <br />写了 = =MLE了。看了下范围2^31,我去啊。。我还开了俩队列,那绝对超了啊。 = =。。<br /> <br />后来想了想,数学方法,要么比前一个步子大,相等,或者小。就一直让它递增,以中间某个点对称,然后递减。<br /> <br />把这个序列算下,和到达点的差值,一定可以在序列里再找到一个步子,重复走下这个步子。<br /> <br />比如50<br /> <br />1 2 3 4 5 6 7 6 5 4 3 2 1 1 。原创 2010-12-02 13:49:00 · 1603 阅读 · 0 评论 -
zoj 1577 GCD & LCM
<br />以前遇到求一个数所有因子神马的,都不想做,觉得肯定会超时。。。<br /> <br />不过这次试了下,至少这道题没有超时 = =。。。直接从i从2到根号下n一个一个去判断。。<br /> <br />这个题是已知两个数的最小公倍数和最大公约数,求这两个数有多少对。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <iostream>#include <string.h>#include <math.h>us原创 2010-12-08 10:27:00 · 935 阅读 · 0 评论 -
zoj 2277 The Gate to Freedom
<br />继续数论。<br /> <br />昨晚纠结的那道题,到睡了才想起来,今天在课堂上闲着没事,就用手机搜了道数论题看。。。<br /> <br />这个题是求N^N的结果的最高位。N小于10亿。<br /> <br />和海轮讨论了下,他蛮聪明的,恩,方法可行~~<br /> <br />对于N^N = X两边取对数<br /> <br />N * LOG N = LOGX<br /> <br />求出Y = N*LOGN<br /> <br />对Y取小数 = z<br /> <br />X的原创 2010-10-13 13:24:00 · 1394 阅读 · 0 评论