zoukankan      html  css  js  c++  java
  • 计算1+1/2+1/3+....+1/100的值

    实现1/1-1/2+1/3-1/4+…+1/100的和。

    #include <stdio.h>

    #define SIGN(x) ((x) > 0 ? 1 : ((x) < 0 ? -1 : 0))

    #define ABS(x) ((x) >= 0 ? (x) : -(x))

    typedef long long LL;

    LL gcd(LL a, LL b)

    {

        return b ? gcd(b, a % b) : a;

    }

    typedef struct

    {

        LL up;

        LL down;

    } FRACTION;

    void simplify(FRACTION *f)

    {

        if (f->up == 0)

        {

            f->up = 0;

            f->down = 1;

        }

        else if (SIGN(f->up) * SIGN(f->down) > 0)

        {

            f->up = ABS(f->up);

            f->down = ABS(f->down);

        }

        else

        {

            f->up = -ABS(f->up);

            f->down = ABS(f->down);

        }

        LL g = gcd(ABS(f->up), f->down);

        f->up /= g;

        f->down /= g;

    }

    void input(FRACTION *f)

    {

        scanf("%I64d%I64d", &f->up, &f->down);

        simplify(f);

    }

    void print(FRACTION *f)

    {

        if (f->down == 1)

            printf("%I64d ", f->up);

        else

            printf("%I64d/%I64d ", f->up, f->down);

    }

    void testSimplify()

    {

        FRACTION a = {4, -6}, b = {-8, -6}, c = {99, 66}, d = {0, -5};

        simplify(&a), simplify(&b), simplify(&c), simplify(&d);

        print(&a), print(&b), print(&c), print(&d);

    }

    LL add(FRACTION*a,FRACTION*b,FRACTION*c)

    {

        LL up=a->up*b->down+a->down*b->up;

        LL down=a->down*b->down;

        c->up=up;

        c->down=down;

        simplify(c);

    }

    void testAdd()

    {

        FRACTION a = {4, -6}, b = {-8, -6}, c;

        add(&a, &b, &c);

        print(&c);

    }

    int main()

    {

        int i;

        FRACTION s= {0,1};

        for(i=1; i<=100; i++)

        {

            if(i%2==0)FRACTION cur= {-1,i};

            FRACTION cur= {1,i};

            add(&s,&cur,&s);

        }

        print(&s);

        return 0;

    }

  • 相关阅读:
    linux学习笔记2-命令总结2
    Hbase项目(完整版)
    hbase的优化(全)
    hbase读写流程
    Hbase出现ERROR: Can't get master address from ZooKeeper; znode data == null解决办法
    hbase的命令
    快照原理
    xshell同时发送多条命令
    配置NTP集群时间同步(二)
    配置 NTP 时间服务器
  • 原文地址:https://www.cnblogs.com/eastofeden/p/7376018.html
Copyright © 2011-2022 走看看