https://vjudge.net/problem/UVA-10288

大街上到处在卖彩票,一元钱一张。购买撕开它上面的锡箔,你会看到一个漂亮的图案。

图案有n种,如果你收集到所有n(n≤33)种彩票,就可以得大奖。

请问,在平均情况下,需要买多少张彩票才能得到大奖呢?

答案以带分数形式输出

例:当n=5时

思路简单,就是输出麻烦

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=;
struct fraction
{
long long numerator;
long long denominator;
fraction()
{
numerator=;
denominator=;
}
fraction(long long num)
{
numerator=num;
denominator=;
}
fraction(long long a,long long b)
{
numerator=a;
denominator=b;
this->reduction();
}
void operator =(const long long num)
{
numerator=num;
denominator=;
this->reduction();
}
void operator=(const fraction b)
{
numerator=b.numerator;
denominator=b.denominator;
this->reduction();
}
fraction operator + (const fraction b)const
{
long long gcdnum=__gcd(denominator,b.denominator);
fraction tmp=fraction(numerator*(b.denominator/gcdnum)+b.numerator*(denominator/gcdnum),denominator/gcdnum*b.denominator);
tmp.reduction();
return tmp;
}
fraction operator + (const int b)const
{
return ((*this)+fraction(b));
}
fraction operator - (const fraction b)const
{
return ((*this)+fraction(-b.numerator,b.denominator));
}
fraction operator - (const int b)const
{
return ((*this)-fraction(b));
}
fraction operator * (const fraction b)const
{
fraction tmp=fraction(numerator*b.numerator,denominator*b.denominator);
tmp.reduction();
return tmp;
}
fraction operator * (const int b)const
{
return ((*this)*fraction(b));
}
fraction operator / (const fraction b)const
{
return ((*this)*fraction(b.denominator,b.numerator));
}
void reduction()
{
if(numerator==)
{
denominator=;
return;
}
long long gcdnum=__gcd(numerator,denominator);
numerator/=gcdnum;
denominator/=gcdnum;
}
void print()
{
if(denominator==) { printf("%lld\n",numerator); }
else
{
long long num=numerator/denominator;
long long tmp=num;
int len=;
while(tmp)
{
len++;
tmp/=;
}
for(int i=;i<=len;i++) printf(" ");
if(len) printf(" ");
printf("%lld\n",numerator%denominator);
if(num) printf("%lld ",num);
tmp=denominator;
while(tmp)
{
printf("-"); tmp/=;
}
puts("");
for(int i=;i<=len;i++) printf(" ");
if(len) printf(" ");
printf("%lld\n",denominator);
}
}
}f[maxn];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
f[]=;
for(int i=;i<=n;i++)
f[i]=f[i-]+fraction(,i);
f[n]=f[n]*n;
f[n].print();
}
return ;
}

最新文章

  1. SpringMVC4零配置--web.xml
  2. nsDATA 转结构体
  3. Codevs 1140 Jam的计数法 2006年NOIP全国联赛普及组
  4. AS3排序
  5. opencv mat 转灰度图
  6. hdu4705 Y 2013 Multi-University Training Contest 10
  7. use ambiguous的错误——编译错误
  8. Dora.Interception,为.NET Core度身打造的AOP框架 [4]:与依赖注入框架的无缝集成
  9. DUMP3.5 企业级电商项目
  10. sqlmap常用渗透方法
  11. day 29 元类
  12. 解决jQuery和其他库冲突
  13. fastjson 使用教程
  14. 记录一次OOM分析过程
  15. 2.git使用之git fetch和git push的区别
  16. HBuilder中ios打包
  17. 给RadioButtonList绑定Selected的值
  18. [c#][福利]BTTool种子文件修改工具
  19. poj3468A Simple Problem with Integers(线段树的区域更新)
  20. [转]LINQ: Using INNER JOIN, Group and SUM

热门文章

  1. A9
  2. 【BioCode】读文件夹以发现缺失文件
  3. 自签证书 doesn&#39;t match any of the subject alternative names
  4. Spring Cloud构建微服务架构
  5. dom对象转成jquery对象时候 变成数组 jquery转成dom时候 取数组第一个
  6. 【bzoj2669】[cqoi2012]局部极小值 容斥原理+状压dp
  7. 【uoj#282】长度测量鸡 结论题
  8. 【JavaScript&amp;jQuery】5秒跳转
  9. Openssl的编译安装以及Vs2012上环境搭建教程
  10. Ckeditor与Ckfinder(java)整合实现富媒体内容编辑(支持文件上传)