![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学杂题
Joyyiwei
这个作者很懒,什么都没留下…
展开
-
uva 10161
题意:找规律,自己慢慢琢磨吧#include #include #include #include using namespace std;int n ;int main(){ int hang,lie; while(scanf("%d",&n) && n ) { if(n == 1) { printf("1 1\n"); continue; } i原创 2013-08-04 18:36:37 · 743 阅读 · 0 评论 -
uva 10591
题意:最大数字也就81*9,不会很大,那就简单了#include #include #include using namespace std;int sort(int x) { int y=0; while (x>0) { y=y+(x%10)*(x%10); x=x/10; }原创 2013-08-25 21:23:22 · 746 阅读 · 0 评论 -
FZU 2104 Floor problem
题意:求向下取整的和#include #include #include #include using namespace std;int n,L,R;int main(){ int t; scanf("%d",&t); while (t--){ scanf("%d%d%d",&n,&L,&R); int sum = 0;原创 2013-11-26 19:26:12 · 810 阅读 · 0 评论 -
FZU 2110 Star
题意:求有n个点能组成几个锐角三角形,很容易想到:a^2+b^2 > c^2 (c应该是最大的),考虑了精度问题#include #include #include #include using namespace std;const int MAXN = 2005;#define eps 1e-9struct node{ double x,y;};int check原创 2013-11-27 10:59:29 · 928 阅读 · 0 评论 -
UVA - 11401 Triangle Counting
题意:有多少种方法可以从1,2,3....n中选出3个不同的正整数,使得以他们为三边长可以形成三角形思路:枚举O(n^3)会超时,设三角形最大的边长x,其他两边分别为y,z。根据三角形不等式有y+z > x ,所以z的范围是 x-y 根据这个不等式,当y=1时,显然有不等式是无解的;当y=2的时只有一个解(z = x-1).....,当y=x-1时有x-2个解,再排除掉y=z和重复原创 2014-02-11 21:10:56 · 1149 阅读 · 0 评论 -
UVA - 11538 Chess Queen
题意:在n*m的棋盘上,有多少种方法使得两个皇后相互攻击思路:分三种情况:1.同一行上的相互攻击:第一个皇后有n*m种方法,第二个皇后只有(m-1),同行不同列的方法2.同一列上的相互攻击:同上3.同一对角线上的攻击:设n另一个方向的也是如此,那么确定了第一个放皇后的位置后,另一个就好确定了结果是:2 *(2*i(i-1){i 从1到n-1} + (n-m+1)*n*(n-原创 2014-02-11 15:57:36 · 916 阅读 · 0 评论 -
UVA - 11806 Cheerleaders
题意:在一个n行m列的矩形里面放k个相同的石子,要求第一行,最后一行,第一列,最后一列都要有石子。问有几种方法。思路:设A表示“第一行没有石头的集合”,B表示“最后一行没有石头的集合”C表示“第一列没有石头的集合”,D表示“最后一列没有石头的集合”利用容斥原理得:我们要求的是{S-{AUBUCUD}},S表示全集而A∪B∪C∪D=|A|+|B|+|C|+|D| - |A∩B|原创 2014-02-11 23:46:08 · 1358 阅读 · 0 评论 -
UVA - 11375 Matches
题意:求用n个火柴能组成几个非负整数,火柴不必用完,前导0是不能存在的思路:把“已经用过火柴数i”表示状态,以后每添加一个数字x就转移状态i到i+c[x](c[x]表示x 用到的火柴数),因为没有前导0,所以状态为0的时候是不能添加数字0的(最后当n>=6的时候再添加一个代表0)令d[i]表示到i状态的个数,利用加法原理,因为可以不必用完火柴,所以答案是:d[1]+...d[n]#原创 2014-02-12 21:39:00 · 1242 阅读 · 0 评论 -
UVA - 11361 Investigating Div-Sum Property
题意:统计大于等于a,小于等于b,每一位之和可以被k整除,且本身也能被k整除的数的数量。思路:用dp[pos][i][j]表示n的还剩pos位的时候和的余数是i,整除的余数是j,每次试着添加一位,更新余数,还要一个标记数来标记是否记忆,注意整形范围内,各个位上的数字和不会超过100#include #include #include #include #include using原创 2014-02-14 20:36:36 · 1030 阅读 · 0 评论 -
UVALive - 4123 Glenbow Museum
.题意:Glenbow博物馆要建直角多边形的地面, 要求这个多边形有一个点可以看到边界上每一个点.并且 地面每个90度的内角就标记为R,每个270度的内角标记为O, 现在给定一个L长度的RO序列, 问你有多少种可能满足地面的序列思路:观察到R的个数比O多4个,且序列中不可能出现OO,且会有四个RR,然后两个相邻的RR边之间有序列“OROROR....RORO”,一共会有(n+4)/2个R和原创 2014-02-15 17:42:57 · 1490 阅读 · 0 评论 -
ZOJ - 3762 Pan's Labyrinth (点到直线距离模板)
题意:找出高最大的三角形思路:有技巧的枚举,先找出离A最远的C点,再枚举B点,证明:点击打开链接#include #include #include #include #include #include using namespace std;const int MAXN = 510;struct node{ double x,y;}p[MAXN];int n;原创 2014-03-08 16:00:07 · 1344 阅读 · 0 评论 -
HDU - 3461 Code Lock (并查集和幂运算)
题意:有一个字母锁,含有n个字母,然后给定m个区间,并规定区间里面的那一段字母是可以同时改变的,比如a变为b,b变为c,z变为a之类的,然后如果锁可以通过有限次变换变成相同的,就规定为同一把锁。然后要求有多少把不同的锁思路:起初没想到好的处理有重叠的集合的情况,后来参考了学长的点击打开链接#include #include #include #include using namespa原创 2014-03-14 21:01:52 · 1011 阅读 · 0 评论 -
ZOJ - 3752 The Three Guys
题意:求三个人能组成的最大的三角形面积,人时可以折叠的思路:设想三个人六个点围成一个圆,任选三个点,如果可以组成三角形的话,就求他们的面积,当然人是不能拆开的#include #include #include #include #include using namespace std;double area(int a,int b,int c){ if (a abs(b原创 2014-03-09 13:18:46 · 1213 阅读 · 0 评论 -
HDU - 4497 GCD and LCM
题意:给出三个数的gcd,lcm,求这三个数的所有的可能思路 :设x,y,z的gcd为d,那么设x=d*a,y=d*b,z=d*c,a,b,c肯定是互质的,那么lcm=d*a*b*c,所以我们可以得到a*b*c=lcm/gcd=ans,将ans分解因数后,那么每次都要分配每个因数的个数,假设某个因数的个数为n,一定要有两个分配到n,0,所以是6种#include #include #i原创 2014-04-25 19:49:10 · 1086 阅读 · 0 评论 -
HDU - 1575 Tr A
DescriptionA为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。 Input数据的第一行是一个T,表示有T组数据。 每组数据的第一行有n(2 <= n <= 10)和k(2 <= k < 10^9)两个数据。接下来有n行,每行有n个数据,每个数据的范围是[0,9],表示方阵A的内容。原创 2014-07-01 15:28:51 · 845 阅读 · 0 评论 -
HDU - 4709 Herding
DescriptionLittle John is herding his father's cattles. As a lazy boy, he cannot tolerate chasing the cattles all the time to avoid unnecessary omission. Luckily, he notice that there were N trees原创 2014-07-05 14:29:28 · 943 阅读 · 0 评论 -
uva 10387
题意:有一个长为a宽为b的桌子,现在在桌子的中心放一小球,开始时小球的速度与水平方向有一个夹角,小球在s时间内在水平方向上与桌子相撞了n次,在垂直方向上与桌子相撞了m次,现在要求小球与水平方向所成的角度和速度大小.思路:其实就是在一个无数个相同的桌子拼接成的图上找一条直线过两个桌子的中点,并,满足题目的碰撞次数。。。。#include #include #include #include原创 2013-08-06 21:18:08 · 704 阅读 · 0 评论 -
uva 10970
题意 : 把 n * m 的巧克力切块的最少刀数。。#include #include #include using namespace std;int main(){ int M,N; while (scanf("%d%d",&N,&M) != EOF ) { int a = ( N - 1 ) + N * ( M - 1);原创 2013-08-06 15:51:26 · 653 阅读 · 0 评论 -
uva 375
题意:给你等腰三角形的高和底,求在半径不小于给定值的时候,连续内切圆的周长和 ,水题,画图就可以做出来了#include #include #include #include using namespace std;int main(){ double b,h,l,sum,temp,r; double PI = acos(-1.0); int t;原创 2013-08-06 20:04:44 · 777 阅读 · 0 评论 -
uva 113
题意:开平方啊,值并没有超过double能表示的范围,水过 。。。。#include #include #include using namespace std;int main(){ double n,p; while(cin>>n>>p) { cout<<(int)(pow(p,1.0/n)+0.5)<<endl; } return 0;}原创 2013-08-04 18:32:53 · 617 阅读 · 0 评论 -
uva 591
题意: 求变成一样的最少移动个数。。。直接求平均后,将大于平均值的个数相加就行了#include #include #include using namespace std;int arr[100];int sum,n;int main(){ int cas = 1; while (scanf("%d",&n) != EOF && n ) {原创 2013-08-04 19:50:18 · 875 阅读 · 0 评论 -
uva 621
题意:水题,S代表任意串。。。#include #include #include using namespace std;char str[100000];int main(){ int t; scanf("%d",&t); getchar(); int i; for(i=0;i<t;i++) { gets(st原创 2013-08-04 18:59:11 · 675 阅读 · 0 评论 -
uva 573 水题
题意:H代表墙的高度,U代表的白天要爬的高度,D代表晚上要下降的高度,F代表每天要减少的高度百分比。。。然后就是单纯的模拟了#include #include #include using namespace std;int main(){ double H,U,D,F; while (scanf("%lf%lf%lf%lf",&H,&U,&D,&F) != EOF )原创 2013-08-05 08:30:22 · 846 阅读 · 0 评论 -
uva 846
题意:在给出的两个数A,B,找出最少需要几步可以从A到B,规则:第一步和最后一步必须是1,还有中途只可以比前一数大一,等于,或小一。。第一种方法:从A,B开始依次加,然后距离减去步长,直到 dis#include #include #include #include using namespace std;int n;int main(){ int t;原创 2013-08-05 10:13:42 · 719 阅读 · 0 评论 -
uva 10250
题意:已经两条线段互相垂直平分,且告诉你其中一条线段的两个端点,让你求另外两个点这里用到了:先让中点变成原点#include #include #include using namespace std;int main(){ double x1,x2,x3,x4,y1,y2,y3,y4,ox,oy; while (cin>>x1>>y1>>x2>>y2原创 2013-08-05 14:11:52 · 759 阅读 · 0 评论 -
uva 10499
列题意:求增加的面积占表面积的比例,球的表面积是4pi*r^2 ,每分出一块我们就增加表面积2*pi*r^2,然后规律就出来了。。#include #include #include using namespace std;int main(){ int n; while (scanf("%d",&n) != EOF ) { if ( n < 0原创 2013-08-06 08:23:11 · 580 阅读 · 0 评论 -
uva 10790
#include #include #include using namespace std;long long sum,n,m;int main(){ int cnt = 0 ; while (scanf("%lld%lld",&n,&m) != EOF ) { if ( n== 0 && m == 0) break原创 2013-08-06 09:47:31 · 654 阅读 · 0 评论 -
uva 11044
题意:求所给的矩阵中的最小的九宫格数,边界的可以不算在内,因为要完全覆盖,所以无法凑成九宫格的也要算上#include #include #include using namespace std;int main(){ int t ; scanf("%d",&t); while (t--) { int a,b;原创 2013-08-06 10:14:13 · 722 阅读 · 0 评论 -
uva 10719
题意:f(x)=(x-k)p(x)+r,给你k,给你f(x)的各项系数,要你求出p(x)和r。动手将等号右边的式子拆开就会有结果了,记住多项式相等的条件是,最高次数相等,系数也对应相等。。。。#include #include #include using namespace std;const int MAXN = 10010;int k,n,p[MAXN],q[MAXN];原创 2013-08-06 11:14:53 · 677 阅读 · 0 评论 -
uva 10177
题意:给你二维,三维,四维的方格,长为N,求出在三种情况下的正方型。正方体,长方形。长方体(不含正方形)思路:正方形很好确定是长为1*1的有N*N,2*2的(N-1)(N-1).。。。。 ;矩形的有在N+1条边中选出2条,即:C(n)2 *C(n)2 ;三维,四维的依次类推 ,公式取百度吧#include #include #include #include using原创 2013-08-06 14:21:48 · 698 阅读 · 0 评论 -
uva 10112
题意 : 找出图上点能凑成三角型的最大面积,且这个三角形不能包含其他的点#include #include #include #include using namespace std;double area(int x1,int y1,int x2,int y2,int x3,int y3){ return fabs(0.5*((y3-y1)*(x2-x1)-(y2-y1原创 2013-08-06 21:57:56 · 673 阅读 · 0 评论 -
uva 10916
题意:Amtel公司宣布他们会在2010年发行128位元的计算机,在2020年发行256位元的计算机,在这个策略之下往后每10年就发行2倍位元的计算机。(Amtel公司在2000年发行 64位元,1990年发行32位元计算机,1980年发行16位元计算机,1970年发行8位元计算机,1960年发行4位元计算机,也是第一部计算机)。Amtel公司将使用一种新的规格基准 「原创 2013-08-06 15:36:45 · 760 阅读 · 0 评论 -
uva 10014
题意:单纯的数学推论题:自己动手吧结果 : (n + 1)a1 = na0 + an+1 - 2(nc1 + (n-1)c2 + (n-2)c3 + …… + cn)#include #include #include using namespace std;int main(){ int t,n; double af,al,c,sum; c原创 2013-08-06 16:15:16 · 705 阅读 · 0 评论 -
uva 579
题意:计算时针和分针之间的夹角(小于180度)#include #include #include using namespace std;int main(){ double a,b; while (scanf("%lf%*c%lf",&a,&b) != EOF ) { if (a == 0 && b == 0)原创 2013-08-06 17:00:03 · 601 阅读 · 0 评论 -
UVA - 11174 Stand in a Line
题意:村民排队,村子里有n个人,有多少种方法可以把他们排成一列,使得没有人排在他的父亲前面,输出方案mod 1000000007思路:一篇概述的不错的博客:点击打开链接,主要是学到的除法求模的定理: a = (b/c) ==> a%m = b*c^(m-2)%m ( m为素数 ) 证明如下: b = a * c 根据费马小定理 a^(p-1)= 1 %p (p是素数原创 2014-02-13 22:13:07 · 1318 阅读 · 0 评论