
数论
chaojidage
我只是想多赚点币子,然后好下资源。
展开
-
codeforces368c
题意,给你个数,让你找能构成勾股数的另外两个数。 然后,这是数论。。。。我查了个结论。 **若勾股数组中的某一个数已经确定,可用如下的方法确定另外两个数. 首先观察已知数是奇数还是偶数. (1)若是大于1的奇数,把它平方后拆成相邻的两个整数,那么奇数与这两个整数构成一组勾股数. (2)若是大于2的偶数,把它除以2后再平方,然后把这个平方数分别减1,加1所得到的两个整数和这个偶数构成一组勾股原创 2016-08-22 16:07:15 · 286 阅读 · 0 评论 -
cf246c
题意给你n个数,然后用n个数构造k个不同的序列,每一个序列的数不能用两次,每个数都不同,n小于50,k<=((n+1)*n/2) 题解是我傻逼了。。。。。这个题。。。。。。我艹。。。。。 这么回事啊,就是它选取前x个数剩下的数随便选一个就行了。这种有(n - x)种方法。如此做来就有了那个数据范围#include<cstdio>#include<cstring>#include<algori原创 2017-03-13 21:34:34 · 296 阅读 · 0 评论 -
cf682b
题意给你一个字符串,长度为(1~3e5)然后问你其中的子序列中有没有是4的倍数的。 题解一开始想了一会儿,因为这个题是放在算法里面的,我以为是dp或者是数论什么的,but好吧,其实很简单,当前位置能被4整除,sum++,当前位置+10*(当前位置减1)能被4整除,sum++,在此情况下,如果前面有第三位,因为如果十位和个位能被4整除,加个100也能被4整除,1000,10000都一样。#inclu原创 2017-01-31 07:52:05 · 1200 阅读 · 0 评论 -
uva11094
这是个dp也是个数论,好吧,其实我两种方法都不会,还是看了好久好久好久好久别人做的才看懂别人用数论做的,dp的找人帮帮看吧题意给你一个数n,由m个数组成,问有几种方法,可以是0 数量级是100 心路历程首先,我想dfs,but这可是阶乘级别的,拉倒吧。然后就不会了 后来看到别人用的隔板法,会了。 **举个栗子**10个小球放进3个盒子,就相当于,在中间放了2个板子,在九个空隙之间。然后再用想原创 2017-01-30 16:26:22 · 232 阅读 · 0 评论 -
uva11388
题意给你lcm(a,b),和gcd(a,b),让你求出来a,b,如果有多个符合的话,那么就打印出来最小的a那对。如果没有则输出‘-1’。 题解如果lcm%gcd != 0则输出-1,gcd是a的时候a最小,然后就让b成为lcm吧。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespac原创 2017-01-30 14:20:50 · 296 阅读 · 0 评论 -
codeforces578a
这个题真的好几天想了好几天,主要是公式没看懂。 a/b是划分的那个区域,然后为什么是划分的区域呢?我一开始想如果接近那个落点的话,a/b可以特别的小,然后这个公式就不科学了。后来我想明白了,因为她让求最小值,所以当他特别小的时候,那个x值就改变了,所以说,这个划分区域还是很靠谱的,昨天家里WiFi掉了,真操蛋。当然还有更操蛋的事情。#include<cstdio>#include<cstring原创 2017-01-23 07:06:34 · 468 阅读 · 0 评论 -
codeforces476c
这个是,题意 给你两个数,1<=a,b<=1e7 我们想要知道,对于k∈[1,a],所有nice integers的和。 所谓nice integer,是指,如果x是nice integer,那么必要有—— 1,mod(x,b)≠0 2,div(x,b)/mod(x,b)=k 我发现我推公式推的不好啊,主要是那个mol,我给整成x - n*b表示,这个n*b就很不好表示,。。,。,。,原创 2017-01-21 16:22:16 · 281 阅读 · 0 评论 -
hdu5924
这个,由于,是个公式,不好复制,所以就。。。其实是个简单数论,如果要是来证明的话,其实这道题还是可以的,但是,我明明找规律就找到了啊,怎么破? 如果a,b不相同,那么,a,b还有b,a如果相同,则,a,a;#include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long LL;原创 2016-10-19 20:45:12 · 363 阅读 · 0 评论 -
uva11300分金币
这个题吧,还是有点难的,那个就是个递推 题意: n个人围成一圈,每个人都有一些硬币,,每个人只能给左右相邻的人硬币,问最少交换几个硬币,使每个人硬币一样多;思路:首先要求出平均数M,每个人的硬币为numi;那么对于1,他能给予4号x1个硬币,并从2号出得到x2个硬币,那么对于1可得numi - x1 + x2 = M; 同理可得numn-xn+x1 = M 就能得到: x2 =x1-C1原创 2016-09-05 20:54:00 · 276 阅读 · 0 评论 -
uvalive6628
给你ac的距离,给你bd的距离,给你ab的距离,然后求at的距离,记住要约分。用辗转相除法#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int gcd(int x , int y){ if(x == 0) return y; if(y == 0)原创 2016-09-05 16:22:24 · 210 阅读 · 0 评论 -
URAL1095
题意给你N个正整数,它们都含有数码1、2、3、4,不超过20位,要求你调整每个正整数中数字的顺序,使它能被7整除。 暴力:妥妥tle 然后就是,可以构造这个东西,你就安排前面几位,然后最后mol%7,有7个数,0 ,1 ,2, 3, 4, 5 ,6, 然后用1,2,3,4构造出来7个数,来填补他们就行了,别忘了用(x % n + i)%n = (10*x + i)%n然后就行了 我是用的412原创 2016-09-15 09:07:48 · 282 阅读 · 0 评论 -
cf 154b
题意你有一堆操作,一个是开启一个机器,还有一个是关闭机器,但是你可能发生冲突,就是你现在开的机器和以前开的最大公约数大于1,然后输出冲突的机器号。如果开已经开的机器,输出已经开了,关闭也是一样。 思路这个题,一开始不太会,后来,看了看别人代码看会了,网上没有这个题的题解,我就写一把 主要是预处理,每个数处理出来最大质因数,每次加入的时候,把所有的质因数都给更新,比如,12->4(12 / 3)-原创 2017-04-29 11:19:31 · 211 阅读 · 0 评论