Binary Stirling Numbers
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 1761   Accepted: 671

Description

The Stirling number of the second kind S(n, m) stands for the number of ways to partition a set of n things into m nonempty subsets. For example, there are seven ways to split a four-element set into two parts:

{1, 2, 3} U {4}, {1, 2, 4} U {3}, {1, 3, 4} U {2}, {2, 3, 4} U {1}

{1, 2} U {3, 4}, {1, 3} U {2, 4}, {1, 4} U {2, 3}.

There is a recurrence which allows to compute S(n, m) for all m and n.

S(0, 0) = 1; S(n, 0) = 0 for n > 0; S(0, m) = 0 for m > 0;

S(n, m) = m S(n - 1, m) + S(n - 1, m - 1), for n, m > 0.

Your task is much "easier". Given integers n and m satisfying 1 <= m <= n, compute the parity of S(n, m), i.e. S(n, m) mod 2.

Example

S(4, 2) mod 2 = 1.

Task

Write a program which for each data set: 
reads two positive integers n and m, 
computes S(n, m) mod 2, 
writes the result. 

Input

The first line of the input contains exactly one positive integer d equal to the number of data sets, 1 <= d <= 200. The data sets follow.

Line i + 1 contains the i-th data set - exactly two integers ni and mi separated by a single space, 1 <= mi <= ni <= 10^9.

Output

The output should consist of exactly d lines, one line for each data set. Line i, 1 <= i <= d, should contain 0 or 1, the value of S(ni, mi) mod 2.

Sample Input

1
4 2

Sample Output

1

Source

可以转化成求C(N,M)来做。当然不是直接转化。

打出表看一下,发现是有规律的。

每一列都会重复一次。打表看一下吧。

思路:

     s(n,m)   如果m是偶数  n=n-1; m=m-1;==>转化到它的上一个s(n-1,m-1);

k=(m+1)/2;  n=n-k; m=m-k;求C(n,m)的奇偶性就可以了。(当然有很多书写方式,不一定要这样做。)

测试用的

 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std; int dp[][];
int cnm[][];
void init()
{
int i,j;
dp[][]=;
for(i=;i<=;i++) dp[i][]=;
for(i=;i<=;i++)
for(j=;j<=i;j++)
dp[i][j]=dp[i-][j-]+dp[i-][j]*j;
for(i=;i<=;i++)
{
for(j=;j<=i;j++)
printf("%d ",(dp[i][j]&));
printf("\n");
} cnm[][]=;
for(i=;i<=;i++)
{
cnm[i][]=;
cnm[][i]=;
}
for(i=;i<=;i++)
{
for(j=;j<=i;j++)
{
if(j==) cnm[i][j]=i;
else if(i==j) cnm[i][j]=;
else cnm[i][j]=cnm[i-][j]+cnm[i-][j-];
}
}
for(i=;i<=;i++)
{
for(j=;j<=i;j++)
printf("%d ",cnm[i][j]&);
printf("\n");
}
}
int main()
{
init();
int n,m;
while(scanf("%d%d",&n,&m)>)
{
printf("%d\n",dp[n][m]);
}
return ;
}

ac代码

 #include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
using namespace std; int a[],alen;
int b[],blen;
void solve(int n,int m)
{
int i;
bool flag=false;
alen=;
blen=;
memset(a,,sizeof(a));
memset(b,,sizeof(b));
while(n)
{
a[++alen]=(n&);
n=n>>;
}
while(m)
{
b[++blen]=(m&);
m=m>>;
}
for(i=; i<=alen; i++)
{
if(a[i]== && b[i]==) flag=true;
if(flag==true) break;
}
if(flag==true)printf("0\n");
else printf("1\n");
}
int main()
{
int T;
int n,m,k;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
if(m%==)
{
n=n-;
m=m-;
}
k=(m+)/;
solve(n-k,m-k);
}
return ;
}

poj 1430 Binary Stirling Numbers的更多相关文章

  1. POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)

    题目链接 http://poj.org/problem?id=1430 题解 qaq写了道水题-- 在模\(2\)意义下重写一下第二类Stirling数的递推式: \[S(n,m)=S(n-1,m-1 ...

  2. poj 1430 Binary Stirling Number 求斯特林数奇偶性 数形结合| 斯特林数奇偶性与组合数的关系+lucas定理 好题

    题目大意 求子集斯特林数\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\%2\) 方法1 数形结合 推荐一篇超棒的博客by Sdchr 就是根据斯特林的 ...

  3. POJ1430 Binary Stirling Numbers

    @(POJ)[Stirling數, 排列組合, 數形結合] Description The Stirling number of the second kind S(n, m) stands for ...

  4. Binary Stirling Numbers

    http://poj.org/problem?id=1430 题目: 求 第二类 斯特林数 的 奇偶性  即 求 s2 ( n , m ) % 2 : 题解: https://blog.csdn.ne ...

  5. UVALIVE 2431 Binary Stirling Numbers

    转自别人的博客.这里记录一下 这题是定义如下的一个数: S(0, 0) = 1; S(n, 0) = 0 for n > 0;S(0, m) = 0 for m > 0; S(n, m) ...

  6. 【poj1430】Binary Stirling Numbers(斯特林数+组合数)

    传送门 题意: 求\(S(n,m)\% 2\)的值,\(n,m\leq 10^9\),其中\(S(n,m)\)是指第二类斯特林数. 思路: 因为只需要关注奇偶性,所以递推式可以写为: 若\(m\)为偶 ...

  7. POJ 3252:Round Numbers

    POJ 3252:Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10099 Accepted: 36 ...

  8. 笛卡尔树 POJ ——1785 Binary Search Heap Construction

    相应POJ 题目:点击打开链接 Binary Search Heap Construction Time Limit: 2000MS   Memory Limit: 30000K Total Subm ...

  9. POJ - 3252 A - Round Numbers

    The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' ...

随机推荐

  1. 数据库迁移之从oracle 到 MySQL

    方式一: 手动方式导入导出 手动的方式导入, 就是操作步骤会比较繁琐一些. 对Table 的结构和数据: 1. 使用 SQL Developer 把 oracle 的 table 的schema 和 ...

  2. [原创] hadoop学习笔记:卸载和安装jdk

    一,卸载jdk 1.确定jdk版本 #rpm -qa  | grep jak 可能的结果: java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64 java- ...

  3. 安装Elasticsearch,Logstash,Kibana(5.0.1-mac版)

    安装Elasticsearch 1.下载https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.0.1.tar.gz包 ...

  4. scan & ATPG

    Testability用来表征一个manufactured design的quality. 将testability放在ASIC前端来做,成为DFT(Design For Test),用可控(cont ...

  5. UIView的ContentMode

    UIViewContentMode   typedef enum {    UIViewContentModeScaleToFill,    UIViewContentModeScaleAspectF ...

  6. 图像处理工具包ImagXpress中如何定义查看器的属性

    想要在图像处理控件ImagXpress中查看一个图像,首先需要创建一个查看器,之后你可以按照你自身的需要,来定义查看器的属性. 创建查看器 想要动态的创建一个查看器,需要先定义一个新的mageXVie ...

  7. 为什么drop table的时候要在checking permissions花很长时间?

    昨天,我drop一个表的时候在checking permissions花了20s+,这个时间花在哪里了呢?经常查找发现我的配置文件innodb_file_per_table=1的,innodb需要遍历 ...

  8. MySQL 5.7 SYS系统SCHEMA

    版权声明:本文为博主原创文章,未经博主允许不得转载. 在说明系统数据库之前,先来看下MySQL在数据字典方面的演变历史:MySQL4.1 提供了information_schema 数据字典.从此可以 ...

  9. org.apache.cxf.interceptor.Fault: No such operation

    webservice错误,访问的时候加后缀wsdl即可,如:http://localhost:9000/HelloWorld?wsdl

  10. 更改MySQL数据文件目录位置

    运维mysql,某些时候需要将数据文件更改到别的路径.以下介绍将mysql的数据文件从/var/lib/mysql迁移到/home/mysqldata/mysql下. 1.停止mysql $ serv ...