【51nod-1315】合法整数集(数位)】的更多相关文章

1315 合法整数集 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 一个整数集合S是合法的,指S的任意子集subS有Fun(SubS)!=X,其中X是一个固定整数,Fun(A)的定义如下: A为一个整数集合,设A中有n个元素,分别为a0,a1,a2,-,an-1,那么定义:Fun(A)=a0 or a1 or - or an-1:Fun({}) = 0,即空集的函数值为0.其中,or为或操作. 现在给你一个集合Y与整…
[思路] 既然是or操作,将数转化为二进制,数位是1,对应的数组元素+1,再将x转为成二进制,只要查找X为1的位置,将之前存放的数组数字找个最小的输出就可以了. 但是并不是所有的数都要参与or,因为有些数的位数>X,显然这些数是不用删除的,所以不用让这些数加到数组里.还有哪些数呢?当有些数的位数是1,而X对应的位数是0,这些数也是一定不用删除的.综合以上只要满足(x|xx)> x就可以参与or. [code] #include <bits/stdc++.h> using names…
<Programming Pearls>(编程珠玑)第一章讲述了如何用位图排序无重复的数据集,整个思想很简洁,今天实践了下. 一.主要思想 位图排序的思想就是在内存中申请一块连续的空间作为位图,初始时将位图的每一位都置为0,然后依次读取待排序文件的整数,将整数所在的位设置为1,最后扫描位图,如果某一位为1,则说明这个数存在,输出到已排序文件.比如待排序的数据S={3,0,4,1,7,2,5},max(S)=7,我们可以设置一个八位的位图B,将位图的每一位初始为0,即B=[0,0,0,0,0,0…
"""给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permutations() 方法实现import itertools def full_arrangement(num): my_str = '' my_list = [] permutation = list(itertools.permutations(str(num), len(str(num)))) for…
一.C语言中的合法整型 首先C语言中的整型有三种表示方式:十进制.八进制和十六进制.(C语言中没有表示二进制的整型) 十进制: 如 int a = 63; //一个正常的整型 八进制: 如果想用8进制对变量进行赋值则这样 int a = 077: //八进制给整型赋值 以数字0开头,由0~7组成 十六进制: int a = 0x3F; //十六进制给整型赋值 以0x开头,由0~F组成 所以我们对合法整数的判断,可以首先从进制判断入手, 若以0开头,则为八进制,不能出现大于等于8的数字: 若以0x…
[BZOJ2728][HNOI2012]与非 Description Input 输入文件第一行是用空格隔开的四个正整数N,K,L和R,接下来的一行是N个非负整数A1,A2……AN,其含义如上所述. 100%的数据满足K≤60且N≤1000,0<=Ai<=2^k-1,0<=L<=R<=10^18 Output 仅包含一个整数,表示[L,R]内可以被计算出的数的个数 Sample Input 3 3 1 4 3 4 5 Sample Output 4 HINT 样例1中,(3…
有一个括号序列,现在要计算一下它有多少非空子段是合法括号序列. 合法括号序列的定义是: 1.空序列是合法括号序列. 2.如果S是合法括号序列,那么(S)是合法括号序列.3.如果A和B都是合法括号序列,那么AB是合法括号序列. Input 多组测试数据. 第一行有一个整数T(1<=T<=1100000),表示测试数据的数量. 接下来T行,每一行都有一个括号序列,是一个由'('和')'组成的非空串. 所有输入的括号序列的总长度不超过1100000. Output 输出T行,每一行对应一个测试数据的…
任何正整数都能分解成2的幂,给定整数N,求N的此类划分方法的数量! 比如N = 7时,共有6种划分方法.   7=1+1+1+1+1+1+1   =1+1+1+1+1+2   =1+1+1+2+2   =1+2+2+2   =1+1+1+4   =1+2+4   傻逼的高精度DP,我只选Java BigInteger.   import java.util.*; import java.math.*; public class Main { public static void main(Str…
容易发现x nand x=not x.并且使用这个性质有x and y=not(x nand y)=(x nand y)nand(x nand y).也就是说nand运算可以作为not和and运算使用.并且显然not和and运算可以表示nand运算,那么两者等价.事实上这就可以表示所有位运算了. 那么考虑位运算有什么事干不了.注意到如果每个数的第i位都和第j位相同, 那么无论怎么操作这两位都是相同的.大胆猜想这也是充分的,即除了这件事其他都能干. 这样位就被分成了很多类,每一类的取值要求相同.类…
打开51Nod全部问题页面,在右边题目分类中找到快速傅里叶变换,然后按分值排序,就是本文的题目顺序. 1.大数乘法问题 这个……板子就算了吧. 2.美妙的序列问题 长度为n的排列,且满足从中间任意位置划分为两个非空数列后,左边的最大值>右边的最小值.问这样的排列有多少个%998244353. 多组询问,n,T<=100000. 题解:经过分析可知,不合法的排列一定存在这样一种划分: 我们考虑答案=f[i]=i!-不合法排列个数. 形如 2 1 3 4 6 5 这种排列,会有三种划分方式不合法(…