zoukankan      html  css  js  c++  java
  • codevs1504愚蠢的组合数 / RQNOJ愚蠢的组合数

    1504 愚蠢的组合数

     

     时间限制: 2 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题。。。

    狗狗定义C(N,K)表示从N个元素中不重复地选取K个元素的方案数。

    狗狗想知道的是C(N,K)的奇偶性。

    当然,这个整天都老是用竖式算123456789*987654321=?的人不会让你那么让自己那么轻松,它说:“N和K都可能相当大。”

    但是狗狗也犯难了,所以它就找到了你,想请你帮他解决这个问题。

    数据范围(高精度)

    对于30% 的数据,n<=10^2 t<=10^4

    对于50% 的数据,n<=10^3 t<=10^5

    对于100%的数据,n<=10^8 t<=10^5

    输入描述 Input Description

    第1行:一个正整数t,表示数据的组数。

    第2~2+t-1行:两个非负整数N和K。(保证k<=n)

    输出描述 Output Description

    每一组输入,如果C(N,K)是奇数则输出1,否则输出0。

    样例输入 Sample Input

    3

    1 1

    1 0

    2 1

    样例输出 Sample Output

    1

    1

    0

    数据范围及提示 Data Size & Hint

    预备知识

    C(n, 0) = C(n, n) = 1 (n > 0;)
    C(n, k) = C(n − 1, k − 1) + C(n − 1, k) (0 < k < n)

    需要高精度优化

    其实并不需要高精度

    如果按我的做法的话

    有一个定律:

    如果n&k==k则c(n,k)为奇数

    否则为偶数

    那就很简单了

    上代码!

    还有一件事……

    位运算要加括号!!!!!!!!!!!

    括号!!!!!!!!!!!!!!!!

    括号!!!!!!!!!!!!!!!!

     

     1 2  3  4 5 
     6 
     7 #include<iostream>
     8 #include<cstdio>
     9 using namespace std;
    10 
    11 int n,k;
    12 int q;
    13 
    14 int main()
    15 {
    16 scanf("%d",&q);
    17 while(q--)
    18 {
    19 scanf("%d%d",&n,&k);
    20 if((n & k) == k)printf("1
    ");//一定要加括号,位运算的运算优先级小于等号
    21 else    printf("0
    ");
    22 }
    23 return 0;
    24 }
  • 相关阅读:
    Qt 交换Layout中的QWidget控件位置
    霍夫变换(Hough)
    图像傅里叶变换
    通俗讲解:图像傅里叶变换
    傅里叶分析之掐死教程(完整版)
    一幅图弄清DFT与DTFT,DFS的关系
    Qt 实现简单的TCP通信
    Qt 基于TCP的Socket编程
    Socket原理讲解
    科研相机选择:sCMOS还是CCD?
  • 原文地址:https://www.cnblogs.com/kuaileyongheng/p/7065498.html
Copyright © 2011-2022 走看看