20171202做的题

精度!精度(精确到小树点后20位)

Description

如今是信息化社会,是数据大爆炸的时代,而与数据其中一个很重要的属性就是数据精度。所谓差之毫厘,谬以千里。在数据精度上便能充分体现。

1991年海湾战争中,爱国者导弹因截断误差导致拦截失败,导弹击中了美军导致28人丧生。最后调查发现是因为导弹系统采用的为24位位模式,无法精确的表示0.1秒,最终导致误差达到了0.3443秒。

那么现在你知道了精度的重要性,我们来体验一下吧。这里有n个分数,a1...ana1…an,你要做的是计算aiai∗ai1ai−1 (2in)(2≤i≤n)的值,精确到小数点后20位。

Input

第一行输入一个整数n(2<n<100)n(2<n<100);接下来nn行输入nn个分数,对于每一个分数,分子与分母以空格分隔(格式:分子 分母)(分子分母均小于等于104104)。

Output

输出n1n−1行,对于每一个aiai1(2in)ai∗ai−1(2≤i≤n);输出一个值(不四舍五入),按ii的从小到大输出。

代码

《20171202做的题》

代码:

#include<iostream>

#include<stdio.h>

#include<cmath>

using namespace std;

int  a[100],b[100],count;

int main()

{

    int n;

    cin>>n;

    for(int i = 0;i < n ;i++)

    {

        cin>>a[i]>>b[i];

    }

    for(int i = 0;i < n – 1;i++)

    {

        count = 1;

        int t1,t2;

        t1 = a[i+1]*a[i];

        t2 = b[i + 1]*b[i];

        if(t2 == 0)

        {

            break;

        }

        else

        {

            if((t1 < 0&&t2 > 0) || (t1 > 0&&t2 < 0))

            {

                t1 = -t1;

                cout<<“-“;

            }

            cout<<t1/t2<<“.”;

            while(count<=20)

            {

                t1 =  t1 % t2 *10;

                cout<<t1/t2;

                count++;

            }

        cout<<endl;

        }

    }

    return 0;

}

点赞