Boastin' Red Socks - UVa 10277
来源:互联网 发布:php时间戳循环输出 编辑:程序博客网 时间:2024/06/05 05:33
题意:共有n个袜子,其中红袜子m只,告诉你拿到两只袜子都是红袜子的概率为p/q,问在袜子数最少的情况下,有多少红袜子,多少黑袜子。
思路:m*(m-1) / n*(n-1) =p/q 那么 每次枚举n,可以得到 m*(m-1)= n*(n-1)*p/q,用map存储所有的m可以表示的数量,这样可以快速得到m。
AC代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<map>using namespace std;typedef long long ll;map<ll,ll> match;int main(){ ll n,m,p,q,ret; int i,j,k; bool flag; for(m=2;m<=50000;m++) match[m*m-m]=m; while(~scanf("%lld%lld",&p,&q)) { if(p==0 && q==0) break; if(p==0) { printf("0 2\n"); continue; } flag=0; for(n=2;n<=50000;n++) { ret=n*(n-1)*p; if(ret%q==0) { ret/=q; if(match[ret]>0) { m=match[ret]; flag=1; break; } } } if(flag) printf("%lld %lld\n",m,n-m); else printf("impossible\n"); }}
0 0
- uva 10277 Boastin' Red Socks
- UVA 10277 Boastin' Red Socks
- uva 10277 Boastin' Red Socks
- UVA 10277 Boastin' Red Socks
- Boastin' Red Socks - UVa 10277
- uva 10277 Boastin' Red Socks
- uva 10277 - Boastin' Red Socks(概率)
- UVa 10277 Boastin' Red Socks (枚举)
- UVa 10277 - Boastin' Red Socks (枚举)
- 10277 - Boastin' Red Socks
- 10277 Boastin' Red Socks(概率 暴力枚举)
- Boastin' Red Socks
- poj 2645-Boastin' Red Socks-算组合
- UVA10277 - Boastin' Red Socks(枚举+二分)
- uva10277 - Boastin' Red Socks(炫耀红白袜子)
- POJ 2645 Boastin' Red Socks(组合数学)
- socks
- SOCKs
- 第七讲
- js关闭浏览器事件
- 深入研究Java类加载机制
- 深度学习框架caffe代码解析一:主要类的关系说明
- ios开发-c语言之数组、数组和函数的学习
- Boastin' Red Socks - UVa 10277
- java多线程机制三--线程的常用方法
- 1.0C语言数据与数据类型
- Android的自定义Menu使用PopupWindow实现
- Java中foreach用法
- ThinkPHP学习笔记(6)添加扩展功能类并import导入
- HDU 1143 Tri Tiling (状压DP)
- (1.1.8)循环算法的特征以及典型循环算法杨辉三角、螺旋队列等
- 从可复用、可维护、可扩展角度浅析《简单工厂模式》