uva10288:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1229

题意:有一种盒子,盒子一面会随机放一种卡片,现在要集齐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);
} }
}

最新文章

  1. 【openGL】关于画点
  2. nginx配置文件nginx.conf超详细讲解
  3. php生成UUID
  4. [MACOS] Mac上的抓包工具Charles
  5. mvc json post执行顺序
  6. 咏南C/S开发框架支持最新的DELPHI XE8开发
  7. The dialect was not set. Set the property hibernate.dialect
  8. 学习C++ Primer 的个人理解(三)
  9. RecyclerView 小记
  10. hbase0.96 put流程 源码分析
  11. 教程:查找内存泄漏 (JavaScript)
  12. xend调用xenstore的出错揭秘
  13. Google C++ style guide——命名约定
  14. iostextField文本框基本使用
  15. Java面试宝典
  16. C# 程序集安装与卸载
  17. vxworks下文件读写示例
  18. win10遇见的问题
  19. 工作随笔—Java容器基础知识分享(持有对象)
  20. 微信公众号页面的web页面键盘弹起问题

热门文章

  1. jeety and tomcat plugins In Maven
  2. 用 Java 技术创建 RESTful Web 服务--转载
  3. session绑定javaBean
  4. Android之发送短信的两种方式
  5. Html----常见标签
  6. yii2 控制器里 action 大小写组合造成的路由问题
  7. 教学项目之-通过Python实现简单的计算器
  8. python 之路,Day11 (下)- sqlalchemy ORM
  9. frontpage 正则 查找与替换
  10. 关于Linux下面msyql安装后并未设置初始密码,但是登录报错“Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)”的解决方案