pku 3252 Round Numbers 组合数学 找规律+排列组合

http://poj.org/problem?id=3252

看了discuss里面的解题报告才明白的,这个解题报告太强大了:http://poj.org/showmessage?message_id=158333不多讲已经很详细了,不明白多看几遍肯定会明白的。

注意这里的公式c(i,j) = c(i - 1,j  -1) + c(i - 1,j);

c(n,0) + c(n,1) + c(n,2) + c(n,3) + ...... + c(n,n) = 2^n;

View Code
#include <cstdio>
#include <cstring>
#include <iostream>
#define maxn 32
using namespace std;int pow2[maxn];
int c[maxn][maxn];
int b[maxn];
int s,e;void init()
{int i,j;memset(pow2,0,sizeof(pow2));memset(c,0,sizeof(c));for (i = 0; i < maxn; ++i){pow2[i] = (1<<i);//打表2的i次方c[i][0] = c[i][i] = 1;}//求组合数for (i = 2; i < maxn; ++i){for (j = 1; j < i; ++j)c[i][j] = c[i - 1][j - 1] + c[i - 1][j];}
}
int solve(int x)
{if (x <= 1) return 0;int n1,n0,i,j,len;int ans = 0;//求出x的二进制表示形式for (i = 0; i < maxn; ++i){if ((pow2[i]&x)!= 0) b[i] = 1;else b[i] = 0;}//找到开头为1的位置for (len = maxn - 1; b[len] == 0; --len){}//求长度维1,2,3,4,5....len的所有可能的和for (j = len; j >= 1; --j){if (j%2 == 1) ans += (pow2[j - 1] - c[j - 1][(j - 1)/2])/2;else ans += pow2[j - 1]/2;}//检查一下本身是不是满足条件n1 = n0 = 0;for (i = 0; i <= len; ++i){if (b[i]) n1++;else n0++;}if (n0 >= n1) ans++;//这就是第二部分的求解n0 = 0; n1 = 1;for (i = len - 1; i >= 0; --i){if (b[i]){//j + n0 + 1是当前可能的0的个数, i - j + n1是当前可能的1的个数for (j = i; j + n0 + 1 >= i - j + n1 && j >= 0; --j) ans += c[i][j];n1++;}else n0++;}return ans;
}
int main()
{init();scanf("%d%d",&s,&e);printf("%d",solve(e) - solve(s - 1));return 0;
}

 

转载于:https://www.cnblogs.com/E-star/archive/2012/05/03/2481275.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《The Coaching Booster》问与答

由Shirly Ronen-Harel和Jens R. Woinowski 编写的《The Coaching Booster》 一书探讨了不同的教练方法和实践&#xff0c;并介绍了一种教练框架&#xff0c;支持教练帮助人们达到他们的目标。\InfoQ 采访了Shirly Ronen-Harel 和 Jens R. Woinowski&#xff0c;谈论了他们的书为…

用一辈子去领悟的生活经典[转帖]

1、说话要用脑子&#xff0c;敏事慎言&#xff0c;话多无益&#xff0c;嘴只是一件扬声器而已&#xff0c;平时一定要注意监督、控制好调频旋钮和音控开关&#xff0c;否则会给自己带来许多麻烦。讲话不要只顾一时 痛快、信口开河&#xff0c;以为人家给你笑脸就是欣赏&#xf…

反射应用和获取Class对象的三种方式

一、写一个“框架”&#xff0c;可以创建任何对象运行任何方法 1、配置文件 2、使用类加载器ClassLoader&#xff0c;Properties集合是可以和IO流结合使用完成读取和写入数据的集合&#xff0c;方法参数列表是IO流&#xff1b; Class类的静态方法forName()创建Class对象&#x…

error: gnu/stubs-32.h: No such file or directory

/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory sudo yum install glibc-devel转载于:https://www.cnblogs.com/greencolor/archive/2012/05/03/2481286.html

Android得到一个闹钟在第三方

收集报警信息 闹铃时间,闹铃备注信息 闹铃引起系统变化的点&#xff1a; 1. Send Notification (正点闹钟能够设置不发送) 2. Play audio 闹铃信息结构体 ClockInfo{ String apkName; String startTime; String backup; } SendNotification SystemUI BaseStatusBar.java 在Base…

ASP.NET_读写Cookie

Cookie (HttpCookie的实例)提供了一种在 Web 应用程序中存储用户特定信息的方法。例如&#xff0c;当用户访问您的站点时&#xff0c;您可以使用 Cookie 存储用户首选项或其他信息。当该用户再次访问您的网站时&#xff0c;应用程序便可以检索以前存储的信息。 创建Cookie方法 …

【转】selector函数指针回调机制

selector可以叫做选择器&#xff0c;其实指的就是对象的方法&#xff0c;也可以理解为C语言里面的函数指针&#xff0c;在面向对象里面的对应概念。[self performSelector:selector(Hidden) withObject:nil afterDelay:2.8];//2.8秒之后调用selector里面的函数&#xff0c;很好…

8 种有趣的用于 Web 品牌的动物

当 Mozilla 推出最新移动浏览器 Fennec 时&#xff0c;很多人需要借助 Wikipedia 才知道 Fennec 是什么意思&#xff0c;Web 2.0 产品以各种古怪的命名著称&#xff0c;要么非常拗口&#xff0c;象 Flickr&#xff0c;要么很 cute&#xff0c;象 Google&#xff0c;或者干脆不知…

注解使用案例

一、一个简易测试框架&#xff1a; 1、定义Check注解&#xff0c;无需添加属性 2、需要测试的类&#xff0c;添加Check注解 3、测试框架代码&#xff1a; for循环上创建一个文件输出流对象&#xff0c;记录方法测试记录&#xff1a; 捕捉异常&#xff1a; 其中&#xff0c;get…

Java Date Time 教程-时间测量

为什么80%的码农都做不了架构师&#xff1f;>>> 在Java中&#xff0c;用System.currentTimeMillis()来测量时间最方便。你要做的是在某些操作之前获取到时间&#xff0c;然后在这些操作之后你想要测量时间&#xff0c;算出时间差。下面是一个例子&#xff1a; 1lon…

Java -- 网络编程(一):Client与Server之间的数据传送

目前对于我这种刚接触网络编程的豆芽来说&#xff0c;对网络编程最直观的了解就是&#xff1a;一些的Client和一个Server端之间的数据传递。具体当然是复杂的&#xff0c;但是那是我以后要学的。 今天我知道了可以通过Socket和DatagramSocket两种套接字来进行Client和Server的链…

企业使用RTX腾讯通2013

2019独角兽企业重金招聘Python工程师标准>>> 腾讯通基本上成为了公司的默认配置&#xff0c;确实缺不了&#xff0c;这里记录一篇配置RTX&#xff0c;包括服务端和客户端。 1.客户端的使用 1.1 一般使用人员不需要关心任何事&#xff0c;只需要登录管理员分配给你的…

C++ Primer 第六章 语句

本章内容比较简单&#xff0c;不作过多说明。如果学习过任意一门编程语言可以跳过本章。 转载于:https://www.cnblogs.com/kingcat/archive/2012/05/07/2487764.html

表达式求解

表达式求解问题 第四次数据结构实验&#xff1a; 实验三&#xff1a;表达式求值 实验目的&#xff1a; 1、掌握顺序栈结点类型的定义 2、掌握栈的插入和删除结点操作的特点&#xff1b; 3、熟悉对栈的一些基本操作和具体的函数定义。 代码&#xff1a; 1 /*Status.h 各种常量状…

date()

$ttime(); echo date("Y-m-d H:i:s",$t); 第一个参数的格式分别表示: a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日&#xff0c;二位数字&#xff0c;若不足二位则前面补零; 如: "01" 至 "31" D -…

Absolute C++ Chapter 3 Self-Test Exercise(3)

15. Hello Goodbye One more time Hello End of program 16. It will occur an error only there is 0 person to divide to ice-cream. 17. #include<iostream> using namespace std; void product(int num1,int num2,int num3); int main() {  cout<<"Gi…

棍子节快乐~ 顺便转一篇weka源码分析解析~【转自weka中文网】

经常看到有人问&#xff0c;我想修改Weka里面的算法&#xff0c;我想把Weka的算法加到我自己的程序里面去&#xff0c;但是我该从哪里着手呢&#xff1f;于是&#xff0c;这篇帖子就有必要出现了。但是&#xff0c;这个题目太大了&#xff0c;Weka里面有那么多代码呢&#xff0…

Android中弹出对话框,AlertDialog关键代码

写在这里便于以后查看。 Android中弹出对话框的关键代码&#xff1a; 1 btn01.setOnClickListener(new OnClickListener() {2 3 Override4 public void onClick(View v) {5 Toast.makeText(musicActivity.this, "tanchu", 1…

poj 2226 Muddy Fields 最小顶点覆盖

题目链接&#xff1a;http://poj.org/problem?id2226 这道题跟上一道很相似不同之处在于这里不是整行或者整列的删&#xff0c;而是连续的几个可以一起删&#xff0c;不连的不能删&#xff0c;这就要对原图进行处理&#xff0c;对原有的图行由上到下&#xff0c;列由左到右进行…

python抓取网站URL小工具

1、安装Python requests模块&#xff08;通过pip&#xff09;&#xff1a; 环境搭建好了&#xff01; 2、测试一下抓取URL的过程&#xff1a; 抓取出来的URL有JavaScript代码&#xff0c;正则上还有待更加完善&#xff0c;有兴趣的可以研究下~&#xff01; 工具源代码: #coding…