
数学
文章平均质量分 60
GooMaple
这个作者很懒,什么都没留下…
展开
-
UVa 10079 - Pizza Cutting
简单推公式的题。代码如下:#include #include #include #include #include #include using namespace std;int main(){#ifdef test freopen("sample.txt", "r", stdin);#endif long long n; while(sc原创 2012-12-10 18:33:27 · 734 阅读 · 0 评论 -
ZOJ 1577 - GCD & LCM
GCD & LCMTime Limit: 2 Seconds Memory Limit: 65536 KBGiven x and y (2 1) p and q are positive integers;2) GCD(p, q) = x;3) LCM(p, q) = y.Inputx and y, one line for each test.原创 2013-02-02 23:08:40 · 1008 阅读 · 0 评论 -
ZOJ 3470 Magic Squares
Magic SquaresTime Limit: 2 Seconds Memory Limit: 65536 KBOne day, the astronauts from China arrived in a planet that they have never been before. First, they sent a robot called AAA to原创 2012-08-01 14:10:29 · 673 阅读 · 0 评论 -
UVa 10137 - The Trip
完全是一个卡精度的水题,当时也是wrong了好几遍~~~代码如下:#include#include#define N 100int main(){#ifdef sta freopen("sample.text","r",stdin);#endif double money[1000+1],sum,sum2,min,aver; int n,i;原创 2012-07-30 16:38:56 · 642 阅读 · 0 评论 -
UVa 10023 - Square root
大数开平方,本来用从网上查的手动开平方的方法写的代码,但中间过程需要用到double型的量存取,结果TLE,调试了一下,原来是double型的量存取长度不够,换成long double型的量,可以存到10的100次方了,但交上以后依然WA,又调试了半天才发现,当double型量存取数字到18位左右以后,虽然依然可以存取数字,但数字的精度已经会有改变,也就是说位数还是那个位数,但实际数字已经不对了。原创 2013-01-30 09:12:37 · 1130 阅读 · 0 评论 -
UVa 993 - Product of digits
分解因子,从9开始分解,一直分解到2。0与1需要特殊处理。代码如下:#include#include#include#include#include#includeusing namespace std;int main(){#ifdef test freopen("in.txt", "r", stdin);#endif int t, n, a[原创 2012-08-07 11:08:06 · 737 阅读 · 0 评论 -
HDU 3641 Treasure Hunting
Treasure HuntingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1321 Accepted Submission(s): 403Problem DescriptionZstu_yhr i原创 2012-08-06 19:29:31 · 782 阅读 · 0 评论 -
UVa 10387 - Billiard
可以发现走过的总的水平距离为与垂直边碰撞的次数乘以水平边的长度,即:(a * m),同理总的垂直距离为(b * n)。所以,其弧度为 (a*m)/(b*n) 的反正切值,再转换为角度,总长度用勾股定理算出来再除以时间,就是速度。代码如下:#include#include#include#include#includeusing namespace std;int原创 2012-08-02 11:01:27 · 1263 阅读 · 0 评论 -
UVa 10177 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?
曾经放了好久的题,今天A掉了,其实就是推公式了,唯一觉得被坑了就是在windows下long long占位符是%I64d,而UVa用的貌似是linux,为此WR了一次,查了一下,改成%lld后AC了。题目解法:对于正方形正方块来说,比较好找找规律,比如边长是4的二维下的正方形就是:1+4+9+25=39.即:前面所有边长的平方和,三维四维的相应的就是三次方和四次方。对于边不同长的长原创 2012-08-02 11:00:14 · 1593 阅读 · 0 评论 -
UVa 10791 - Minimum Sum LCM
分解质因子的一个题,将最小公倍数分解质因子,最小的和sum便为各个质因子的相应次方数之和。此题难点在于几个特殊的情况的处理:(1)当N = 1时,应输出2(1*1=1,sum=1+1=2);(2)当N是素数的时候,输出N+1(N*1=N,sum=N+1);(3)当只有单质因子时,sum=质因子相应次方+1;(4)当N=2147483647时,它是一个素数,此时输出2原创 2013-01-28 21:49:45 · 2422 阅读 · 1 评论 -
UVa 10673 - Play with Floor and Ceil
扩展欧几里得算法,直接套模板即可。代码如下:#include #include #include void gcd(int a, int b, long long &d, long long &x, long long &y){ if(!b) { d = a; x = 1; y = 0; } el原创 2013-01-28 14:32:24 · 617 阅读 · 0 评论 -
UVa 11121 - Base -2
将一个十进制转化为-2进制的数。同样求余数,当n%-2代码如下:#include #include #include int main(){#ifdef test freopen("sample.txt", "r", stdin);#endif int t, n, bi, cct=0; char binary[1000]; scanf("%d原创 2013-01-28 19:35:14 · 776 阅读 · 0 评论 -
UVa 10183 - How Many Fibs?
求区间[a,b]内斐波那契数的个数,因为最大到了10的100次方,初步递推一下,10的100次方左右,可达到斐波那契数列的第480项左右,因此用暴力枚举+大数加法即可。代码如下:#include #include #include char fibo[480][105];void Fibonacci(char *a, char *b, char *c)//斐波那契数列打表{原创 2013-01-29 09:17:13 · 733 阅读 · 0 评论 -
UVa 106 - Fermat vs. Pythagoras
对于a2+b2=c2,求出所有满足条件的(a,b,c)三元组,输出a,b,c三个互质的组别的数量和从1到N中所有的三元组中都没有出现过的数字的个数。要求互质毕达哥拉斯三元组,可直接得到:a = m^2-n^2 b = 2mn c = m^2+n^2因为三个变量之间两两互质,所以a,b中必为一奇一偶。(详细证明见:http://www.cnblogs.com/de原创 2013-01-28 11:59:10 · 757 阅读 · 0 评论 -
UVa 10006 - Carmichael Numbers
打素数表+快速幂取模。题目较简单,只要数字满足其不是素数且利用“Fermat test”方法证明所有情况下均满足,则其为Carmichael Numbers。注意数字范围,分治求幂模时要用long long。代码如下:#include #include #include bool vis[65002];void Is_Prime(int n)//打素数表{ m原创 2013-01-26 22:37:31 · 813 阅读 · 0 评论 -
UVa 128 - Software CRC
题意比较难懂,简单说来就是:给你一个字符串,每个字符占一个字节(256进制),后面再加俩个字节,使得字符串的总值可以被34943整除,最后输出这俩个字符的16进制值。代码如下:#include #include #include char str[1030];const int MAX = 34943;int main(){#ifdef test freopen("s原创 2013-01-28 08:33:16 · 674 阅读 · 0 评论 -
UVa 138 - Street Numbers
题目实际就是给你两个数m、n,使得m、n之间的数之和与1~m之间的数之和相等(不包括m)。即:1+2+...+m-1 == (m+1)+...+n; 因此我们可以套用求和公式,两边移项化简得:2*pow(m,2) = n*(n+1)。因此我们可以得到:m = sqrt(n*(n+1)/2)。枚举n的值,从而判断所得到的m值是否为整数,若为整数则说明两边的值实际相等。得到输出满足条件的最小的原创 2013-01-26 22:22:59 · 1153 阅读 · 0 评论 -
HDU 1717 - 小数化分数2
整数化小数,不循环的小数容易化。对于循环小数化分数原理如下:⑴ 把0.4747……和0.33……化成分数。例1: 0.4747……×100=47.4747…… 0.4747……×100-0.4747……=47.4747……-0.4747……(100-1)×0.4747……=47即99×0.4747…… =47 那么 0.4747……=47/99例2原创 2013-01-30 10:50:58 · 2008 阅读 · 0 评论