• 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 }
  • 相关阅读:
    梯度消失、爆炸原因及其解决方法(转)
    Learning to Rank for IR的评价指标—MAP,NDCG,MRR
    tensorflow中使用指定的GPU及GPU显存 CUDA_VISIBLE_DEVICES
    深度学习 weight initialization
    python 第三方包安装
    列表操作 -深拷贝与浅拷贝
    python排序 sorted()与list.sort() (转)
    Python 第三方库 cp27、cp35 等文件名的含义(转)
    Learning to Rank(转)
    Spring MVC异常处理
  • 原文地址:https://www.cnblogs.com/kuaileyongheng/p/7065498.html
Copyright © 2020-2023  润新知