Problem Description For two integers m and k, k is said to be a container of m if k is divisible by m. Given 2 positive integers n and m (m < n), the function f(n, m) is defined to be the number of containers of m which are also no greater than n. Fo…
Number of Containers Time Limit: 1 Second Memory Limit: 32768 KB For two integers m and k, k is said to be a container of m if k is divisible by m. Given 2 positive integers n and m (m < n), the function f(n, m) is defined to be the number of contain…
3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f[i][j]\)i位数j个1的方案数..不考虑天际线就是组合数... 比较坑的地方是本题求f要取模\(phi(1e7+7)\),然后它并不是质数... #include <iostream> #include <cstdio> #include <cstring> #inc…
这还是一道数论题 TimeLimit:4000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Special Judge   Problem Description 最后来个字符串签个到吧,这题其实并不难,所需的算法比较基础,甚至你们最近还上过课. 为了降低难度,免得所有人爆零.这里给几个提示的关键字 :字符串,回文,二分,哈希. 注意要对奇偶回文分开二分 这样还不会做,说明基础有所欠缺. 给你一个字符串A和一个字符串B,请你求一个满足以下…
P4317 花神的数论题 题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 题目描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. 花神的题目是这样的:设 sum(i)表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 ∏i=1N​sum(i) ,也就是sum(1)∼sum(N)的乘积. 输入输出格式 输入格式: 一个正整数 N. 输出格式: 一个数,答案模 10000007 的值. 输入输…
[LG4317]花神的数论题 题面 洛谷 题解 设\(f_{i,up,tmp,d}\)表示当前在第\(i\)位,是否卡上界,有\(tmp\)个一,目标是几个一的方案数 最后将所有\(d\)固定,套数位\(dp\)的板子 然后快速幂乘起来就好了 代码 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #includ…
BZOJ3209 花神的数论题 Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积. Input 一个正整数 N. Output 一个数,答案模 10000007 的值.…
3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2498  Solved: 1129[Submit][Status][Discuss] Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了.花神的题目是这样的设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数…
[BZOJ3209]花神的数论题 Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了.花神的题目是这样的设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你派(Sum(i)),也就是 sum(1)—sum(N) 的乘积. Input 一个正整数 N. Output 一个数,答案模 10000007 的值. Samp…
[bzoj3209]: 花神的数论题 首先二进制数中1的个数最多就是64个 设所有<=n的数里二进制中1的个数为i的有a[i]个 那么答案就是  然后快速幂 求a[i]可以用DP 设在二进制中从高到低考虑到第k位,第k位之前的1的个数是cnt,n总共有len位 若第k位==1 那么 a[cnt+j]+=C(len-k,j) (j<=len-k) 其实就是前k-1位都与n前k-1位相等,第k位为0,后len-k随意选择j个1时对a的贡献 /* http://www.cnblogs.com/kar…
觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g[i-1][j]; 然后我就开始gang.然后先是for for j没有从0开始.然后是cnt增加的时候忘了*,接着是1<<tmp没有用ll,还有是读入优化没有用longlong,最后成功的过了若干较小的数据.WAWAWAWAWA5发.最后发现指数不能直接取模!.终于AC了喜极而泣TAT =>…
3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2633  Solved: 1182[Submit][Status][Discuss] Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了.花神的题目是这样的设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数…
BZOJ_3209_花神的数论题_组合数+数位DP Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我等蒟蒻又遭殃了. 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积. Input 一个正整数 N. Output 一个数,答案模 10…
题目名有毒 由于并没有系统地开始学习数论,所以数论题基本靠暴力. 然鹅本题的题解相当简单: emmm....我当你没说 一个简单易懂的方法是这样的: 1. 欧拉定理的推论 若正整数a,n互质,则对于任意正整数b,有 a^b≡a^(b mod φ(n)) (mod n) 2.欧拉函数 我们用1~n中与n互质的数的个数称为n的欧拉函数. 欧拉函数我们用φ(n)表示. 特殊地,当n为质数时,φ(n)=n-1. 那么我们可以综合以上知识 先求出b^c mod (p-1) ,再用快速幂求出a^(b^c m…
花神的数论题 bzoj-3209 题目大意:sum(i)表示i的二进制表示中1的个数,求$\prod\limits_{i=1}^n sum(i)$ 注释:$1\le n\le 10^{15}$. 想法:喷一下题目...神tm数论题,明明是个dp. 显然,如果稍微打个表的话就可以发现,有很多数的sum是相等的,我们不想重复乘这么多次,所以我们想到将所有sum相等的数弄到一起然后快速幂.这样,就不难想到数位dp 状态:dp[i][j]表示i位,sum值是j的个数. 转移是容易的,按照数位dp的边界特…
[数位DP][P4317]花神的数论题 Description 给定 \(n\),求 \(n\) 以内所有正整数二进制下 \(1\) 的个数的乘积,答案对 \(10^7 + 7\) 取模 Limitations \(1 \leq n \leq 10^{15}\) Solution 这是我见过最简单的数位 DP,然而我还是翻车了-- 考虑 \(1\) 最多有 \(O(\log n)\) 个,因此 \(1\) 的个数是可以枚举的. 枚举求有 \(k\) 个 \(1\) 的数的个数,设 \(f_{i,…
题目: 3209: 花神的数论题 解析: 二进制的数位DP 因为\([1,n]\)中每一个数对应的二进制数是唯一的,我们枚举\(1\)的个数\(k\),计算有多少个数的二进制中有\(k\)个\(1\) 设\(n\)的二进制一共有\(num\)位,有\(sum[i]\)个数的二进制中有\(k\)个\(1\), 答案就是\(\prod_{i=1}^{num}i^{sum[i]}\) 用数位DP搞一下就好了 设\(f[i][j]\)表示到第\(i\)位有\(j\)个\(1\)时有多少个数 枚举\(k\…
花神的数论题 题意描述: 设\(sum(i)\)表示\(i\)的二进制数中\(1\)的个数. 给定一个整数\(N\),求\(\prod_{i=1}^Nsum(i)\). 输入描述: 输入包含一个正整数\(N(N\leq10^{15})\). 输出描述: 一个数,答案模\(10000007\)的值. 解题思路: 数位\(dp\)+快速幂. 令\(f(i,j,k)\)表示以\(k\)开头的\(i\)位数中\(1\)的个数为\(j\)的数量.有转移方程 \(f(i,j,0)=f(i-1,j,0)+f(…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3216 乱搞的...watashi是分块做的...但我并不知道什么是分块...大概就是把结果相同的数据合并计算 打表跑了一下...发现重复出现的数字很多...于是直接找出会发生重复的数乘起来就行了... /********************* Template ************************/ #include <set> #include <m…
Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n). Example 1: Input: [3, 2, 1] Output: 1 Explanation: The third maximum is 1. Examp…
披着数论题外衣的数位dp. 相当于数一数$[1,n]$范围内$1$的个数是$1,2,3,4,...log(n)$的数各有多少个,直接在二进制下数位dp. 然而我比较sb地把(1e7 + 7)当成了质数,其实数出来的数是要模$\phi(p)$的,然而数出来的数绝对不会超过$n$. 时间复杂度$O(log^{4}n + \sqrt{P})$. Code: #include <cstdio> #include <cstring> using namespace std; typedef…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC -- 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级难的神题啦-- 我等蒟蒻又遭殃了.花神的题目是这样的设 sum(i) 表示 i 的二进制表示…
一道简单的数位 dp 题 但是脑子里只有 __builtin_popcountll 了呢(自重) 看完题解后很快就理解了,而且有一种这么简单的题居然没想到做法真是不应该唉~的感觉 用 f[i] 表示 1 的位数为 i 且小于 n 的数的个数 然后答案就是 Πif[i] ,而 f[i] 的话从高到低 dp 用组合数乱搞搞一下就可以了 O((lgn)2) 比如说前 i-1 位有 k 位 1 ,第 i 位是 1 ,后面还有 j 位数 然后令第 i 位取 0 ,那么无论后 j 位取了什么数,都比 n 小…
规定sum[i] 为i里面含1的个数 ,求从1-N sum[i]的乘积. 数为64位内的,也就是sum[i]<=64的,这样可以dp求出1-N中含k个1的数有多少个,快速幂一下就可以了. 有个地方没开LL ,WA了几次. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<vecto…
题意: 有一个含有n+1个元素的数组,元素值是在1-n之间的整数,请找出其中出现超过1次的数.(保证仅有1个出现次数是超过1的数) 思路: 方法一:O(nlogn).根据鸽笼原理及题意,每次如果<=k的数超过了k个,那么答案必定在[1,k].可以用二分枚举答案来解决. bool left(vector<int>& nums,int tar)//是否在左边 { ; ; i<nums.size(); i++) if(nums[i]<=tar) cnt++; return…
题目 落单的数 III 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字. 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5 挑战 O(n)时间复杂度,O(1)的额外空间复杂度 解题 根据落单的数I,可以想到,所有的数进行异或运行的结果就是所求两个数的异或结果. 这个异或的结果,二进制数是1的位置说明这两个数对应的二进制位不相同.然后再怎么还原???参考,理解的不是很透,找到第k位后,再判断数组中所以数的第k位是0 还是1,,出现两次的数对求解无影…
题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级的额外空间复杂度 解题 可以利用HashMap直接解决,时间复杂度和空间复杂度都是O(N) 1.map中存在该元素则:map.put(num,map.get(num) + 1) 2.map中不存在该元素则:map.put(num , 1) 3.map中这个元素出现次数等于三次,则删除该元素 空间复杂…
题目大意:令Sum(i)为i在二进制下1的个数 求∏(1<=i<=n)Sum(i) 一道非常easy的数位DP 首先我们打表打出组合数 然后利用数位DP统计出二进制下1的个数为x的数的数量 最后输出∏(1<=x<=logn)x^ans[x]就可以 此题的坑在于这题的组合数和数位DP的结果都是指数 对指数取模不能直接取 要取Phi(p) 于是我们对10000006取模 然后这题就WA了 由于10000007不是个质数! 10000007=941*10627 于是我们得到Phi(p)=…
二进制数位dp,就是把原本的数字转化成二进制而以,原来是10进制,现在是二进制来做,没有想像的那么难 不知到自己怎么相出来的...感觉,如果没有一个明确的思路,就算做出来了,也并不能锻炼自己的能力,因为我现在需要训练的是做题的思维方法啊! sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,求sum(1)-sum(N) 的乘积. 首先,这道题直接做,感觉无从下手,那么我就想,怎么来转换一下,求1~n中每个数的一的个数总相乘之积,首先感觉到,每个数都会有唯一对应的1的个数,且…
Given an array of integers, every element appears twice except for one. Find that single one. Note:Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? 题目标签:Hash Table 题目给了我们一个 nums array, array 里…