• 【HDOJ】1099 Lottery


    题意超难懂,实则一道概率论的题目。求P(n)。
    P(n) = n*(1+1/2+1/3+1/4+...+1/n)。
    结果如果可以除尽则表示为整数,否则表示为假分数。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 #define MAXN 25
     5 
     6 __int64 buf[MAXN];
     7 
     8 __int64 gcd(__int64 a, __int64 b) {
     9     if (b == 0) return a;
    10     else    return gcd(b, a%b);
    11 }
    12 
    13 int main() {
    14     int i, j, k, n;
    15     __int64 fz, fm, tmp, intr;
    16 
    17     buf[1] = 1;
    18     for (i=2; i<=22; ++i)
    19         buf[i] = i*buf[i-1]/gcd(i, buf[i-1]);
    20 
    21     while (scanf("%d", &n) != EOF) {
    22         fz = 0;
    23         fm = buf[n];
    24         for (i=1; i<=n; ++i)
    25             fz += fm/i;
    26         fz *= n;
    27         tmp = gcd(fz, fm);
    28         fz /= tmp;
    29         fm /= tmp;
    30         tmp = fz/fm;
    31         fz -= tmp*fm;
    32         if (fz == 0) {
    33             printf("%I64d
    ", tmp);
    34             continue;
    35         }
    36         n = 0;
    37         intr = tmp;
    38         while (tmp) {
    39             ++n;
    40             tmp /= 10;
    41         }
    42         for (i=0; i<=n; ++i)
    43             printf(" ");
    44         printf("%I64d
    ", fz);
    45         printf("%I64d ", intr);
    46         j = k = 0;
    47         while (fz) {
    48             ++j;
    49             fz /= 10;
    50         }
    51         tmp = fm;
    52         while (tmp) {
    53             ++k;
    54             tmp /= 10;
    55         }
    56         j = (j>k) ? j:k;
    57         for (i=0; i<j; ++i)
    58             printf("-");
    59         printf("
    ");
    60         for (i=0; i<=n; ++i)
    61             printf(" ");
    62         printf("%I64d
    ", fm);
    63     }
    64 
    65     return 0;
    66 }
  • 相关阅读:
    操作系统简介
    计算机基础
    Django之form
    CMDB资产采集
    Git
    User model
    多级评论
    个人主页
    media路径设置
    Web框架
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3793581.html
Copyright © 2020-2023  润新知