zoukankan      html  css  js  c++  java
  • ZOJ-Little Sub and Pascal's Triangle(思维规律)

    Little Sub is about to take a math exam at school. As he is very confident, he believes there is no need for a review.

    Little Sub's father, Mr.Potato, is nervous about Little Sub's attitude, so he gives Little Sub a task to do. To his surprise, Little Sub finishes the task quickly and perfectly and even solves the most difficult problem in the task.

    Mr.Potato trys to find any possible mistake on the task paper and suddenly notices an interesting problem. It's a problem related to Pascal's Triangle.

    “math”/

    The definition of Pascal's Triangle is given below:

    The first element and the last element of each row in Pascal's Triangle is , and the -th element of the -th row equals to the sum of the -th and the -th element of the -th row.

    According to the definition, it's not hard to deduce the first few lines of the Pascal's Triangle, which is:

     
      
       
        
    ......

    In the task, Little Sub is required to calculate the number of odd elements in the 126th row of Pascal's Triangle.

    Mr.Potato now comes up with a harder version of this problem. He gives you many queries on this problem, but the row number may be extremely large. For each query, please help Little Sub calculate the number of odd elements in the -th row of Pascal's Triangle.

    Input

    There are multiple test cases. The first line of the input contains an integer  (), indicating the number of test cases. For each test case:

    The first and only line contains an integer  (), indicating the required row number in Pascal's Triangle.

    Output

    For each test case, output the number of odd numbers in the -th line.

    Sample Input

    3
    3
    4
    5
    

    Sample Output

    2
    4
    2

    题意:求出杨辉三角第n行的奇数数量

    思路:将n先减一,然后求出此时n的二进制中1的数量cnt,2的cnt次方即为答案(注意longlong不要用I64d,要用lld)

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    
    using namespace std;
    int main(){
        int T;
        cin>>T;
        
           while(T--){
           long long int m;
           scanf("%lld",&m);
           long long int cnt=0;
           m-=1;
    	   while(m)        
    		{   
    			cnt++;
    			m-=m&(-m);
    		}
    		long long ans=1ll<<cnt;
    		printf("%lld
    ",ans);
           
        }
        return 0;
    }
  • 相关阅读:
    PowerDesigner如何导出建表sql脚本(转)
    excel插入行时提示不能将对象移到工作表外,怎么解决!!
    Axure知识点
    移动互联网学习的点
    什么是大数据?
    [Android开源项目] GitHub开源项目总结 (转)
    程序员自我提高的几点建议 很实诚(转)
    程序员必须进行的10项投资(转)
    安卓版本的问题
    Android APK反编译详解(转)
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781844.html
Copyright © 2011-2022 走看看