Coupons
2024-10-16 14:52:39
题意:有一种盒子,盒子一面会随机放一种卡片,现在要集齐n种卡片,问要买多少个盒子。
题解:假如说n==2,那么第一次买,肯定可以得到一种新的卡片,第二次买得到新的卡片的概率是1/2,也就是说你那买2包才能得到新的卡片,所以期望值是1+2==3;如果n==3的话,第一次概率是1,第二次是2/3,也就是说第二次要买3/2包才能得到一种新的卡片,第三次是1/3,所以要买3包,所以总的期望是1+3/2+3;一次类推,可以得到期望:n/1+n/2+n/3+.....+n/n.还有题目中的输出格式,用log(a)/log(10)+1就可以得到a的位数。还有uva用的是lld,不是I64d
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<set>
#include<cmath>
using namespace std;
long long n,temp,a,b,ans;
long long gcd(long long a, long long b){
if(b==)
return a;
return gcd(b,a%b);
} int main(){
while(~scanf("%lld",&n)){
a=;b=;ans=;
for(int i=;i<=n;i++){
a=a*i+b;
b=b*i;
temp=gcd(a,b);
a/=temp;
b/=temp;
}
a*=n;
temp=gcd(a,b);
a/=temp;
b/=temp;
ans=a/b;
a=a%b;
temp=gcd(a,b);
a/=temp;
b/=temp;
int m,t;
int s=(int)(log(b)/log()+);
m=t=(int)(log(ans)/log()+);
if(a==)
printf("%lld\n",ans);
else{
while(t--)printf(" ");
printf("%lld\n",a);
printf("%lld ",ans);
while(s--)printf("-");
printf("\n");
while(m--)printf(" ");
printf("%lld\n",b);
} }
}
最新文章
- 【openGL】关于画点
- nginx配置文件nginx.conf超详细讲解
- php生成UUID
- [MACOS] Mac上的抓包工具Charles
- mvc json post执行顺序
- 咏南C/S开发框架支持最新的DELPHI XE8开发
- The dialect was not set. Set the property hibernate.dialect
- 学习C++ Primer 的个人理解(三)
- RecyclerView 小记
- hbase0.96 put流程 源码分析
- 教程:查找内存泄漏 (JavaScript)
- xend调用xenstore的出错揭秘
- Google C++ style guide——命名约定
- iostextField文本框基本使用
- Java面试宝典
- C# 程序集安装与卸载
- vxworks下文件读写示例
- win10遇见的问题
- 工作随笔—Java容器基础知识分享(持有对象)
- 微信公众号页面的web页面键盘弹起问题
热门文章
- jeety and tomcat plugins In Maven
- 用 Java 技术创建 RESTful Web 服务--转载
- session绑定javaBean
- Android之发送短信的两种方式
- Html----常见标签
- yii2 控制器里 action 大小写组合造成的路由问题
- 教学项目之-通过Python实现简单的计算器
- python 之路,Day11 (下)- sqlalchemy ORM
- frontpage 正则 查找与替换
- 关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)”的解决方案