摘要: 题意:给你n、k,问你有多少个n为二进制的数(无前导零)的0与1一样多,且是k的倍数 题解:对于每个k都计算一次dp,dp[i][j][kk][l]表示i位有j个1模k等于kk且第一位为l(0/1) 再次预处理mod[i][j]表示1的i次方模j等于几,具体看代码注释 阅读全文
posted @ 2017-04-12 22:52 专注如一 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 题意:选择k(k<15)个唯一质数,求出和为n(n<1121)的可能数 题解:预处理dp,dp[k][n]表示使用k个素数拼成n的总方案数 就是三重枚举,枚举k,枚举n,枚举小于n的素数 但是注意三重循环的顺序与位置,我们要防重防漏 第一重循环是枚举每个小于n的素数,思路是对于每个素数放入dp里面的 阅读全文
posted @ 2017-04-12 22:26 专注如一 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n(n<=100000)个正整数,求一个连续子序列使序列的所有元素的最大公约数与个数乘积最大 题解:我们知道一个原理就是对于n+1个数与n个数的最大公约数要么相等,要么减小并且减小至少一半(至少少了一个因子) 因此所有子串gcd的总种类数最多只有n*log(a(数字大小))个 我们枚举每个 阅读全文
posted @ 2017-04-12 21:08 专注如一 阅读(1091) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n、m(n,m<=200),问你有多少条非水平、非垂直的直线有多少条经过至少两个点 题解:我们需要枚举的是只画一条线的矩形,对于大小a*b的矩形必须保证gcd(a,b)=1才能不重复 接着对于每个矩形可以放的位置有(n-a)(m-b)个,但是如果有矩形在某个矩形的左上方就会再次重复 因此只 阅读全文
posted @ 2017-04-12 20:53 专注如一 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题意:给你a、b(a<=2000,b<=2000000),问你从原点可以看到范围在(-a<=x<=a,-b<=y<=b)内整数点的个数 题解:首先只需要计算第一象限的点得到答案为ans,再计算ans*4+4就好了;原因是四象限一样,接着上下左右各加上一个点 在第一象限上就是求x属于[1,a]y属于[ 阅读全文
posted @ 2017-04-12 20:45 专注如一 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n、k,计算∑(1<=i<=n)(k%i) 题解:由于k固定所以可以通过打表找到某些余数是等差数列,令p=k/i,所以k/(i+1)也等于p时 计算:k%(i+1) = k-k/(i+1)*(i+1) = k- p*(i+1) =k-p*i-p=k%i-p 所以我们计算时只要k/i == 阅读全文
posted @ 2017-04-12 20:25 专注如一 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题意:给你整数a、b,问你[a,b]间每个数字分解成单个数字后,0、1、2、3、4、5、6、7、8、9,分别有多少个 题解:首先找到[0,b]与[0,a-1]进行区间减法,接着就只是求[0,x] 对于x首先求出他有几位、接着从高位到低位求每个区间 例如x=15602,则依次求出[1,9],[10,9 阅读全文
posted @ 2017-04-12 20:06 专注如一 阅读(544) 评论(0) 推荐(0) 编辑