QDUOJ 40 - 良辰最喜欢对那些自认能力出众的人出手(感谢cqupt..(Pascal三角)

良辰最喜欢对那些自认能力出众的人出手(感谢cqupt..
发布时间: 2015年11月8日 22:31 最后更新: 2015年11月8日 22:35 时间限制: 1000ms 内存限制: 128M

描述
果果一直很谦虚,但是良辰还是对他出手了(汗。。

良辰拿出来一个 Pascal 三角形(也叫杨辉三角形。(请不要问是怎么拿出来的。。

我们用一个矩阵来表示 Pascal 三角形

0: C(0, 0)

1: C(1, 0) C(1, 1)

2: C(2, 0) C(2, 1) C(2, 2)

其中最左边的数字表示行号。C(x, y) 表示一个组合数,即 x 个元素中取 y 个的方法数。

良辰只有一个问题:Pascal 三角形中的第 n 行有多少个奇数?

这样的问题对于果果来说太水了,于是他把这个问题给了你。

输入
第一行为一个整数 T,表示数据组数。 每组数据只有一行,包含一个整数 n,表示 Pascal 三角形的第 n 行。 T <= 2000,0 <= n <= 2^31

输出
每组数据输出一行,包含一个整数,表示Pascal 三角形的第 n 行中的奇数个数。

样例输入1 复制
2
0
1
样例输出1
1
2

Pascal 三角形中奇数项的个数:
以 2 为底,N 的二进制表示中 1 的个数次幂.

例如:
83 = 64 + 16 + 2 + 1 二进制表示为 (1010011),则 83行有 24=16 个奇数。

背后的数学原理:
我们的证明用到了 二次项定理 和 模算数。
根据二次项定理
(1+x)N=∑nk=0(nk)xk.

如果将系数模2,则容易得到一个结论,当 N>=0 时
(1+x)2N=(1+x2N)(mod2)

所以
(1+x)10=(1+x)8(1+x)2=(1+x8)(1+x2)=1+x2+x8+x10(mod 2)

可以看出,当 k = 0, 2, 8, 10 时,(nk) 为奇数。
从 (1+x)^8 (1+x)^2 ,可以看出与 10(1010) 的关系。

AC代码

#include<stdio.h>
#include<math.h>
double qdu(int n)
{
    double cnt = 0;
    while(n)
    {
        if(n%2) cnt++;
        n /= 2;
    }
    return cnt;
}
int main()
{
    int loop;
    scanf("%d",&loop);
    while(loop--)   {
        int a;
        scanf("%d",&a);
        printf("%.0f\n",pow(2.0,qdu(a)));
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1)编写一个程序:以读写方式打开文件'test.txt',要求编码格式为encoding='utf-8',请向该文件写入以下内容: 姓名:XXX 学号:XXXXXXX 专业:会计学 通讯地址:CQUPT, Road 2, Chongwen 电话号码:023-62641000 邮箱:对应学号@cqupt.edu.cn 考试IP地址:生成的一个随机IP字段,具体为172.25.254.1/32。例如,172.25.254.32 若一个人年龄小于2岁,则打印显示:他是婴儿; 若一个人年龄2(含)~4岁,则打印显示:他是幼儿; 若一个人年龄4(含)~13岁,则打印显示:他是儿童; 若一个人年龄13(含)~20岁,则打印显示:他是青少年; 若一个人年龄20(含)~60岁,则打印显示:他是成年人; 若一个人年龄超过60(含)岁,则打印显示:他是老年人。 并读取所有行的内容,最后关闭文件。 (2)编写一个程序:以读写方式打开文件'test.txt',要求编码格式为encoding='utf-8',请向该文件写入以下内容: 姓名:XXX 学号:XXXXXXX 专业:会计学 通讯地址:CQUPT, Road 2, Chongwen 电话号码:023-62641000 邮箱:对应学号@cqupt.edu.cn 考试IP地址:生成的一个随机IP字段,具体为172.25.254.1/32。例如,172.25.254.32 若考试成绩小于0或大于100,则打印显示:成绩输入错误,请重新输入: 若考试成绩小于60,则打印显示:分数等级为E级; 若考试成绩小于70,则打印显示:分数等级为D级; 若考试成绩小于80,则打印显示:分数等级为C级; 若考试成绩小于90,则打印显示:分数等级为B级; 若考试成绩小于等于100,则打印显示:分数等级为A级。 并读取所有行的内容,最后关闭文件。
最新发布
06-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值