• 百度松果 美丽的三角形(求杨辉三角n行m列的数奇偶性)


    题目描述

    tri.jpg
    三角形的生成规律如下:
    1.我们行从0计数,即最上面的是第0行第0列。
    2.第n行有n+1个数字
    3.第0行只有一个数字1
    4.定义 ( x , y ) (x, y) (x,y)为第x行第y列的元素,对于第n(n>0)行,第0个和第n个数字是1,然后对于其他每一列的数字 ( n , i ) ( 1 < i < n ) (n,i)(1(n,i)(1<i<n),如果 ( n — 1 , i ) (n—1,i) (n—1,i) ( n − 1 , i − 1 ) (n-1,i-1) (n1,i1)之中只有一个1,那么 ( n , i ) (n,i) (n,i)是1,否则是0。

    给出一个点的坐标 ( x , y ) (x, y) (x,y)请你输出该坐标对应的元素是1还是0,若 y > x y>x y>x请输出0。

    输入格式

    第—行输入测试样例组数T( 1 ≤ T ≤ 5 × 1 0 5 1≤T≤5×10^5 1T5×105)
    接下来T行,每行输入两个整数( 0 < x ≤ 2 20 , 0 ≤ y ≤ 2 20 00<x220,0y220)

    输出格式

    对于每个数据每行输出一个数”O”或”1”(输出不包括双引号)

    输入样例
    1
    0 0
    
    • 1
    • 2
    输出样例
    1
    
    • 1

    分析

    该问题要求我们求出一个三角中n行m列的数是0还是1。
    我们通过观察杨辉三角的模型和本题目的模型进行比较可以得到一个规律:
    在杨辉三角中的奇数都对应着题目中的1,偶数都对应着0。
    TR
    进而我们可以将问题转化为求杨辉三角中n行m列的一个数是奇数还是偶数。
    由于求解杨辉三角的某一位置上的数可以使用公式:
    n u m = C n m = n ! m ! ⋅ ( n − m ) ! num=C^{m}_{n}=\frac{n!}{m!·(n-m)!} num=Cnm=m!(nm)!n!
    而判断这个组合数的奇偶性的关键是判断 n ! n! n! m ! m! m! ( n − m ) ! (n-m)! (nm)!中质因数2的个数,如果分子中2的个数与分母中2的个数相等,那么则为奇数,否则为偶数。

    C++ 代码
    #include
    using namespace std;
    long long a,b,c;
    int T;
    int calc(int x) //求x的阶乘中质因数2的总个数
    {
        int co=0;
        while(x){
            x/=2;
            co+=x;
        }
        return co;
    }
    int main()
    {   
        cin>>T;
        while(T--)
        {
            cin>>a>>b;
            c=a-b;
            int ca=0,cb=0,cc=0;
            ca=calc(a),cb=calc(b),cc=calc(c);
            //n比m小,直接输出0
            if(c<0){
                cout<<0<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
  • 相关阅读:
    Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)
    2021年Javascript最常见的面试题以及答案
    如何在Go中编写注释
    OpenAirInterface 实践2 :构建 OAI 系统
    基于微信小程序的知识题库系统设计与实现-计算机毕业设计源码+LW文档
    VAE原理及代码实现
    Django对接支付宝Alipay支付接口
    为什么在Java中使用Integer,1000==1000是false,而100==100是true?
    请注意,你的 Pulsar 集群可能有删除数据的风险
    Vue3 + ts 开发一个ProTable
  • 原文地址:https://blog.csdn.net/Jay_fearless/article/details/127125012