前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HDUOJ 1099——Lottery

HDUOJ 1099——Lottery

作者头像
Gxjun
发布2018-03-21 13:01:53
5240
发布2018-03-21 13:01:53
举报
文章被收录于专栏:mlml

Lottery

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2061    Accepted Submission(s): 941

Problem Description

Eddy's company publishes a kind of lottery.This set of lottery which are numbered 1 to n, and a set of one of each is required for a prize .With one number per lottery, how many lottery on average are required to make a complete set of n coupons?

Input

Input consists of a sequence of lines each containing a single positive integer n, 1<=n<=22, giving the size of the set of coupons.

Output

For each input line, output the average number of lottery required to collect the complete set of n coupons. If the answer is an integer number, output the number. If the answer is not integer, then output the integer part of the answer followed by a space and then by the proper fraction in the format shown below. The fractional part should be irreducible. There should be no trailing spaces in any line of ouput.

Sample Input

2 5 17

Sample Output

3 5 11 -- 12 340463 58 ------ 720720

Author

eddy

Recommend

JGShining

sum=n*∑(1/i);----->n*(1+1/2+1/3+.....+1/n);

题意不好懂.....表示看来白天没明白....之后看了别人的讲的题意才懂的.....

之后的就不难了!

代码:

代码语言:javascript
复制
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 using namespace std;
 6 int gcd(_int64 a,_int64 b)
 7 {
 8     if(b==0)
 9         return a;
10     gcd(b,a%b);
11 };
12 
13 void swap(_int64 *a,_int64 *b)
14 {
15     *a^=*b,
16     *b^=*a,
17     *a^=*b;
18 }
19 int main()
20 {
21     int n,i;
22     char str[20]={'\0'},num[20]={'\0'};
23     _int64 a,b,c,real;
24     while(scanf("%d",&n)!=EOF)
25     {    
26         a=b=1;
27         for(i=2;i<=n;i++)
28         {
29             a=a*i+b;
30             b*=i;
31          if(a<b) swap(a,b);
32            c=gcd(a,b);
33            a/=c;
34            b/=c;
35         }
36     if((n*a)%b)
37     {
38        real=(a/b)*n;
39           a%=b;
40           a*=n;
41         real+=a/b;
42            a%=b;
43          c=gcd(a,b);
44           a/=c;
45           b/=c;
46     itoa(b,str,10); 
47     itoa(real,num,10);
48     for(i=0;i<=strlen(num);i++)
49         printf(" ");
50         printf("%I64d\n%I64d ",a,real);
51     for(i=0;i<strlen(str);i++)
52         printf("-");
53         puts("");
54     for(i=0;i<=strlen(num);i++)
55         printf(" ");
56         printf("%I64d\n",b);
57     }
58     else
59         printf("%I64d\n",n*a/b);
60     }
61     return 0;
62 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-09-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Lottery
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档