设当前有k个,那么也就是说拿到其他图案的可能是(n-k)/n

那么要拿到一个就要拿n/(n-k)次

所以答案就是n(1/n + 1/(n-1) ......1/2 + 1 / 1)

看起来很简单,但是实现有很多细节

一开始我是写了一个分数加法的函数

然后发现中间过程会溢出

所以要做两个操作

(1)  分母为1和n不算,最后算整数部分再加上去

因为如果算的话就要乘进去,分母会溢出

(2)要直接算所有数的最小公倍数,然后分子一起加(看代码)

我一开始是单独一个个分数来加减,这样在算分子的时候中间结果会溢出

#include<cstdio>
#include<cmath>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; typedef long long ll;
int n; ll gcd(ll a, ll b) { return !b ? a : gcd(b, a % b); }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } int get_len(ll x)
{
int ret = 0;
while(x)
{
ret++;
x /= 10;
}
return ret;
} void print(ll x, ll a, ll b)
{
if(a == 0)
{
printf("%lld\n", x);
return;
} REP(i, 0, get_len(x) + 1) putchar(' '); printf("%lld\n", a);
printf("%lld ", x); REP(i, 0, get_len(b)) putchar('-'); puts("");
REP(i, 0, get_len(x) + 1) putchar(' '); printf("%lld\n", b);
} int main()
{
while(~scanf("%d", &n))
{
if(n == 1) { puts("1"); continue; }
ll x = 1;
REP(i, 2, n)
x = lcm(x, i); ll a = 0, b = x;
REP(i, 2, n) a += x / i;
a *= n;
ll t = gcd(a, b);
a /= t, b /= t; print(1 + n + a / b, a % b, b);
}
return 0;
}

最新文章

  1. 浏览器自动刷新——基于Nodejs的Gulp LiveReload与VisualStudio完美结合。
  2. 从零开始学Python07作业思路:模拟人生小游戏
  3. MySQL 拷贝数据库表方式备份,还原后提示 table xxx &#39;&#39; doesn`t exist
  4. C++ 模板函数与模板类
  5. 关于队列queue
  6. App压力测试整理
  7. tinyxml学习4
  8. UVALive 3415 Guardian of Decency(二分图的最大独立集)
  9. LAMP一键安装包(Python版)
  10. ETHREAD APC
  11. linux模块驱动之led(ioremap)
  12. 个人NABCD
  13. lxml.etree.HTML(text) 解析HTML文档
  14. 配置RIPng(PT)
  15. perl-我的第一个程序
  16. python的类的继承-接口继承-归一化设计
  17. 【嵌入式】S3C2410平台移植linux 2.6.14内核
  18. ASP.NET Web Pages:页面布局
  19. 解惑《你必须知道的.net》——C#继承关系中【方发表】的创建和调用
  20. Cocos2d-x for Windows Phone 用法总结

热门文章

  1. Swift学习笔记(10):类和结构体
  2. Android RecyclerView 设置item间隔的方法
  3. split(&quot;:&quot;)[0].substring(1)
  4. latex问题总结
  5. No mapping found for HTTP request with URI [/spring_liu/hello.do] in DispatcherServlet with name &#39;SpringMVC&#39;
  6. 基本数据类型(dict)
  7. 路飞学城Python-Day9(practise)
  8. 每个人都能实现的vue自定义指令
  9. 【BZOJ 1503】[NOI2004]郁闷的出纳员
  10. [置顶] Netty学习总结(1)——Netty入门介绍