20171202做的题

来源:互联网 发布:可以配音的软件 编辑:程序博客网 时间:2024/06/04 00:30

精度!精度(精确到小树点后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的从小到大输出。

代码

代码:

#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;
}


原创粉丝点击