UVA_202 - Repeating Decimals


 Repeating Decimals 

The decimal expansion of the fraction 1/33 is tex2html_wrap_inline43 , where the tex2html_wrap_inline45 is used to indicate that the cycle 03 repeats indefinitely with no intervening digits. In fact, the decimal expansion of every rational number (fraction) has a repeating cycle as opposed to decimal expansions of irrational numbers, which have no such repeating cycles.

Examples of decimal expansions of rational numbers and their repeating cycles are shown below. Here, we use parentheses to enclose the repeating cycle rather than place a bar over the cycle.

tabular23

Write a program that reads numerators and denominators of fractions and determines their repeating cycles.

For the purposes of this problem, define a repeating cycle of a fraction to be the first minimal length string of digits to the right of the decimal that repeats indefinitely with no intervening digits. Thus for example, the repeating cycle of the fraction 1/250 is 0, which begins at position 4 (as opposed to 0 which begins at positions 1 or 2 and as opposed to 00 which begins at positions 1 or 4).

Input

Each line of the input file consists of an integer numerator, which is nonnegative, followed by an integer denominator, which is positive. None of the input integers exceeds 3000. End-of-file indicates the end of input.

Output

For each line of input, print the fraction, its decimal expansion through the first occurrence of the cycle to the right of the decimal or 50 decimal places (whichever comes first), and the length of the entire repeating cycle.

In writing the decimal expansion, enclose the repeating cycle in parentheses when possible. If the entire repeating cycle does not occur within the first 50 places, place a left parenthesis where the cycle begins - it will begin within the first 50 places - and place ``...)" after the 50th digit.

Print a blank line after every test case.

Sample Input

76 25
5 43
1 397

Sample Output

76/25 = 3.04(0)
   1 = number of digits in repeating cycle

5/43 = 0.(116279069767441860465)
   21 = number of digits in repeating cycle

1/397 = 0.(00251889168765743073047858942065491183879093198992...)
   99 = number of digits in repeating cycle


题意:

当a除以b.有一个结论:正整数a/整数b的结果,小数部分总是有限小数或无限循环小数。本题:如果有循环小数,用()标记出来,同时计算出循环小数的长度;如果没有,结尾用(0)表示

解题思路:

1. 鸽巢原理的应用(或者抽屉原则)即:桌上有十个苹果,要把这十个苹果放到九个抽屉里,那么每个抽屉代表一个集合,每一个苹果可以代表一个元素,假如有n+1个元素放到n个集合中去,其中必定至少有一个集合里有两个元素。

应用在本题中,a/b,那么根据模运算,可以知道,余数必定在0~b-1范围,那么当运算第b+1次时,必定重复一个余数(根据鸽巢原理)。当找到开始重复的余数时,即可找到循环节。

2. 用q[MAX]记录每次运算的商,r[MAX]记录每次运算的余数,同时用设置标记数组vist[MAX],标记余数是否出现过

比如5/7  q[0]~q[6]数组依次0 7 1 4 2 8 5; r[0]~r[6]依次为5 5 1 3 2  6 4

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

const int MAX = 3000 +10;
int r[MAX];//保存每次除后的余数
int q[MAX];//保存每次除法的商 quotient
int vist[MAX]; //标记余数是否出现过,vist[i] = 1代表余数i已经出现过,否则还未出现过

int main()
{
    //freopen("202.txt","r",stdin);
    int a,b;
    while(cin>>a>>b)
    {
        memset(r,0,sizeof(r));
        memset(q,0,sizeof(q));
        memset(vist,0,sizeof(vist));

        int a_temp = a; //记录a
        int cnt = 0;
        q[cnt++] = a/b;  //小数点前面的数
        a %= b;
        while(a&&!vist[a]) //a不为0,且a还没有在余数中出现过
        {
            vist[a]= 1;
            q[cnt] = 10*a/b;
            r[cnt] = a;
            a = 10*a%b;
            cnt++;
        }
        cout<<a_temp<<"/"<<b<<" = "<<q[0]<<".";
        if(a==0){
            for(int i = 1;i<cnt;++i) cout<<q[i];
            cout<<"(0)"<<endl;
            cout<<"   1 = number of digits in repeating cycle"<<endl;
        }
        else {
            int pos;
            for(int i = 1;i<=50&&i<cnt;i++)
            {
                if(r[i]==a) { cout<<"("; pos = i;}
                cout<<q[i];
            }
            if(cnt>50) cout<<"...)"<<endl;
            else cout<<")"<<endl;
            cout<<"   "<<cnt-pos<<" = number of digits in repeating cycle"<<endl;
        }
        cout<<endl;
    }
    return 0;
}



repeating-linear-gradient是CSS3中的一个线性渐变函数,用于创建在一个方向上重复出现的线性渐变效果。通过设置渐变的起始和结束位置、颜色以及重复的方式,可以创建出多种不同的渐变效果,如横向渐变、纵向渐变、对角线渐变等。它可以通过在CSS中的background属性中使用来应用到元素上。没问题,有什么可以帮助你的吗? 谢谢您的问询,我可以为您提供更多关于repeating-linear-gradient的信息,包括如何使用它以及一些常见的用例和示例。请告诉我您需要了解哪些方面,我会尽力帮助您。 非常感谢!我想了解如何使用repeating-linear-gradient以及它的一些常见用例和示例。能否给我提供一些相关的资料或者示例代码?当然,下面是一些关于如何使用repeating-linear-gradient和一些常见用例和示例的资料和代码示例。 1. 如何使用repeating-linear-gradient? 使用repeating-linear-gradient创建重复出现的线性渐变,需要设置以下参数: - 渐变的起始和结束位置 - 渐变的颜色 - 渐变的重复方式 下面是一个简单的例子,展示了如何创建一个从左到右的横向渐变: ``` background: repeating-linear-gradient(to right, #f00, #f00 10px, #0f0 10px, #0f0 20px); ``` 在这个例子中,`to right`表示从左到右的渐变方向,`#f00`表示渐变的起始颜色,`#0f0`表示渐变的结束颜色,`10px`表示颜色之间的间距,即红色和绿色之间的间距为10px。 2. 常见的用例和示例 - 创建背景图案 可以使用repeating-linear-gradient创建重复的背景图案,例如条纹、格子等。下面是一个创建斜线条纹背景的例子: ``` background: repeating-linear-gradient(-45deg, #000, #000 10px, #fff 10px, #fff 20px); ``` 在这个例子中,`-45deg`表示渐变的方向为从左上到右下,`#000`表示渐变的起始颜色,`#fff`表示渐变的结束颜色,`10px`表示颜色之间的间距,即黑色和白色之间的间距为10px。 - 创建按钮效果 可以使用repeating-linear-gradient创建按钮的渐变效果,例如点击时出现的阴影、渐变色等。下面是一个创建按钮渐变色的例子: ``` background: repeating-linear-gradient(to bottom, #3498db, #2980b9); ``` 在这个例子中,`to bottom`表示渐变的方向为从上到下,`#3498db`表示渐变的起始颜色,`#2980b9`表示渐变的结束颜色。 - 创建文本效果 可以使用repeating-linear-gradient创建文本的渐变效果,例如添加渐变色的字体、给字体添加边框等。下面是一个创建文本边框的例子: ``` background: repeating-linear-gradient(to right, #000, #000 1px, transparent 1px, transparent 5px); ``` 在这个例子中,`to right`表示渐变的方向为从左到右,`#000`表示渐变的起始颜色,`transparent`表示渐变的结束颜色,`1px`表示颜色之间的间距,即黑色和透明之间的间距为1px。 希望这些资料和代码示例可以帮助您更好地理解repeating-linear-gradient的使用和常见用例。如果您有任何其他问题或需要更多帮助,请随时告诉我。repeating-linear-gradient是CSS3中的一个渐变属性,它可以创建一个线性渐变,并重复沿着指定方向的轴向进行渲染。该属性接受多个颜色值和位置值,可以用来创建渐变的颜色变化。使用repeating-linear-gradient时,需要指定渐变的起始和结束点、方向和颜色值等参数,以实现不同的效果。repeating-linear-gradient 是CSS3中的一个渐变函数,可以创建一个线性渐变的图案并在其中重复使用指定的颜色或颜色组合。该函数使用起点和终点之间的直线来定义渐变,并可以设置渐变的方向、起点和终点位置、颜色和颜色停止位置等属性。使用 repeating-linear-gradient 函数可以轻松地创建漂亮的背景图案和纹理。repeating-linear-gradient 是CSS中的一种渐变函数,用于创建线性渐变。与linear-gradient不同的是,它可以在一定距离后重复显示渐变效果,形成无限重复的渐变背景。该函数需要指定渐变的方向、起点、终点、颜色和重复距离等参数。在实际使用中,可以通过调整参数来实现各种不同的渐变效果。repeating-linear-gradient 是CSS中的一个背景属性,用于创建一个沿着一条线性轴重复的渐变背景。它接受多个参数,包括渐变的起点、终点、颜色和颜色位置等。通过设置这些参数,我们可以创建各种不同的重复线性渐变效果,比如斜线、横线、竖线等等。这个属性在设计网页时非常有用,可以为页面增加更多的美感和视觉层次感。repeating-linear-gradient 是一个CSS背景属性,用于创建一个线性渐变背景图案。与 linear-gradient 不同的是,repeating-linear-gradient 可以使线性渐变图案在整个元素上无限重复出现。 该属性接受多个颜色和位置值作为参数,用逗号分隔。每个颜色和位置值都对应线性渐变中的一个色标位置。可以使用角度或方向向量来指定线性渐变的方向。通过调整这些值,可以创建各种各样的渐变效果。 repeating-linear-gradient 还可以使用 CSS 函数来控制渐变的形状,例如 ellipse、circle、closest-side、farthest-side 等,以及指定重复模式。可以将其应用于背景颜色或背景图像中。repeating-linear-gradient 是 CSS 中的一个函数,用于创建重复的线性渐变背景。它可以接受多个颜色和位置参数,并根据这些参数在背景中生成无限循环的线性渐变。使用该函数可以实现各种有趣的背景效果,如条纹、波纹、斜纹等等。 我可以试着解释一下repeating-linear-gradient的含义:这是一种CSS属性,它可以用来创建一个渐变,其中颜色从一个位置到另一个位置重复出现。repeating-linear-gradient 是 CSS 中的一种线性渐变(linear-gradient),它可以用来创建一条线性渐变,使这条渐变在一定的间隔内重复出现。这个间隔是由渐变的大小和位置决定的,可以通过调整这些参数来控制重复出现的效果。repeating-linear-gradient 通常用于背景的样式设置,可以让背景图案更加生动和多样化。repeating-linear-gradient 是CSS中的一个函数,用于创建一个重复的线性渐变背景。与 linear-gradient 不同的是,repeating-linear-gradient 会重复呈现渐变效果,直到填满整个元素的背景。该函数接受一组参数,包括起始点、结束点、颜色和渐变的方向。可以使用该函数来创建各种不同的背景效果,例如条纹、斜线和波浪线等。repeating-linear-gradient 是一个 CSS 函数,用于创建一个线性渐变,这个渐变将在指定的方向上重复出现。可以使用该函数在背景中创建一些连续的颜色过渡效果。其中,参数包括方向、颜色和终止点等。使用该函数时需要了解一些 CSS 相关知识。repeating-linear-gradient 是一个CSS属性,用于在元素的背景中创建重复的线性渐变效果。该属性可以接受多个颜色值和方向参数,可以创建水平、垂直、对角线等不同方向的渐变效果。使用该属性可以为元素的背景添加更加生动的效果。 我可以解释一下什么是重复线性渐变?重复线性渐变是一种使用两种或多种颜色来渐变的视觉效果,它可以使背景或元素看起来更加丰富和多样化。`repeating-linear-gradient` 是 CSS 的一个属性,用于创建重复的线性渐变。它允许你指定线性渐变的起点、终点和颜色规则,然后在整个元素中重复应用该渐变。与 `linear-gradient` 属性不同的是,`repeating-linear-gradient` 属性会重复应用渐变,直到填满整个元素。repeating-linear-gradient 是一种 CSS 的线性渐变背景图案,可以创建一条线性渐变的背景,并将其无限重复。在使用该函数时,需要指定起点和终点的位置、颜色和停止点等属性。通过控制这些属性,可以创建出多种不同的线性渐变背景图案。repeating-linear-gradient是CSS中的一个渐变属性,用于创建一个重复的线性渐变背景。该属性可以接受多个颜色值,可以定义每个颜色在渐变中所占的位置,还可以定义渐变的方向、起点和终点等参数。使用该属性可以创建出很多有趣的背景效果,如条纹、斜线、波浪等。repeating-linear-gradient 是一种用于创建重复线性渐变的 CSS 函数。使用该函数,可以在元素的背景上创建平滑的渐变效果,而不需要使用多个图像或添加复杂的 CSS 样式。该函数接受多个参数,包括渐变的方向、起始颜色和结束颜色、颜色停止位置以及重复模式等。可以根据需要调整这些参数来创建不同的渐变效果。repeating-linear-gradient 是CSS中的一种渐变类型,用于在元素的背景中创建一条水平或垂直的颜色渐变。与 linear-gradient 不同的是,repeating-linear-gradient 可以重复渐变以填充整个背景区域。该函数接受多个颜色参数和渐变的方向和间距参数,可以通过调整这些参数来创建各种不同的渐变效果。`repeating-linear-gradient` 是 CSS 中的一种线性渐变背景样式。它可以创建一个水平或垂直的线性渐变,这个渐变可以重复多次,从而形成一个无限循环的背景效果。这个属性接受多个颜色值和位置参数来定义渐变的起始点、结束点、颜色变化的位置等等。可以通过调整这些参数来实现不同的渐变效果。repeating-linear-gradient 是CSS中的一个渐变函数,它可以创建一个水平或垂直的线性渐变背景,并使其在指定的范围内重复出现。这个函数的语法类似于 linear-gradient,只是它多了一个关键词 repeating,用于指定渐变的重复方式。在使用这个函数时,我们可以设置渐变的起点、终点、颜色以及渐变的方向,通过调整这些参数,可以创建出不同的渐变效果。repeating-linear-gradient是CSS中的一种渐变背景样式,用于创建一个线性渐变的背景,并且可以重复平铺多次。它可以通过指定起点、终点、颜色等参数来创建一个线性渐变,然后可以通过设置重复次数或重复的尺寸来实现平铺效果。这种样式可以用于创建有趣的背景纹理或动态效果。 我可以为你描述重复线性渐变(repeating-linear-gradient),它是一种CSS(Cascading Style Sheets)背景属性,它可以让你在一个元素的背景上叠加不同的颜色,以形成一个渐变的效果。它的工作方式是,在元素的背景上设置一系列的角度,每个角度对应一种颜色,并在每个角度之间添加一个色彩渐变。这样,可以在元素的背景上创建出线性渐变的效果。`repeating-linear-gradient` 是CSS3中的一个函数,可以用于创建一个重复的线性渐变背景。它可以接受多个参数,包括起始点、方向、颜色值、重复间距等,通过这些参数可以创建出各种不同的线性渐变效果。使用 `repeating-linear-gradient` 函数可以让网页背景看起来更加生动和丰富。repeating-linear-gradient是CSS中的一种渐变样式,可以创建一个水平或垂直的线性渐变背景。与普通的linear-gradient不同的是,repeating-linear-gradient会在整个背景中重复显示渐变颜色,而不是只显示一次。这种渐变样式可以使用CSS的background属性来应用到元素的背景中。repeating-linear-gradient是CSS中的一种渐变效果,它可以创建一个线性渐变并使其在一定范围内重复出现。这种渐变通常可以通过指定起点、方向和颜色阶段来定义,同时还可以设置渐变的重复次数和尺寸范围。在网页设计中,使用repeating-linear-gradient可以为元素添加简单而美观的背景效果。repeating-linear-gradient 是CSS中的一个渐变函数,用于创建一个沿着线性方向重复的渐变效果。它可以指定起点和终点的位置,以及颜色和色标的分布情况,从而创建不同类型的渐变效果。与 linear-gradient 不同的是,repeating-linear-gradient 可以让渐变效果在整个背景上重复出现,直到被填满。repeating-linear-gradient是一种CSS线性渐变的函数,它可以创建一条水平或垂直方向上的渐变颜色条纹,并且可以重复多次。在这个函数中,你可以指定渐变的方向、颜色、起始和结束位置,还可以指定重复次数和间距。通过使用repeating-linear-gradient函数,你可以轻松地为你的网页或应用程序添加有趣的背景或装饰效果。`repeating-linear-gradient` 是 CSS 中的一个属性,用于创建重复的线性渐变背景。它可以在一定范围内重复显示指定的线性渐变效果。在 `repeating-linear-gradient` 属性中,可以指定渐变的方向、颜色和位置等参数。通过这些参数的设置,可以创建出各种不同的线性渐变背景效果。repeating-linear-gradient 是一种CSS(层叠样式表)属性,用于创建重复的线性渐变。该属性可以设置渐变的起点、终点、颜色和重复规则等参数。与 linear-gradient 属性不同的是,repeating-linear-gradient 可以让渐变效果重复出现,直到填满整个容器。使用该属性可以让网页的背景、边框等元素呈现出独特的渐变效果。 我可以为您解释重复线性渐变的概念:它是一种CSS背景图案,它可以让你从一种颜色到另一种颜色渐变,并且可以重复这种渐变。repeating-linear-gradient是CSS的一个渐变函数,用于创建重复的线性渐变。该函数使用以下语法: ``` repeating-linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop> [, <color-stop>]+) ``` 其中,方括号表示可选项,逗号表示分隔符。参数说明如下: - `<angle>`:指定渐变的方向,可以使用角度值(如45deg)或关键词(如top、right、bottom、left等)。 - `to <side-or-corner>`:指定渐变的方向,可以使用关键词(如to top、to right、to bottom、to left、to top right等)。 - `<color-stop>`:指定渐变中每个颜色的位置和颜色值,位置可以使用百分比或长度值,颜色可以使用颜色名称、RGB值、十六进制值等。 以下是一个示例: ``` background: repeating-linear-gradient(45deg, red, yellow 10%, blue 20%); ``` 该示例创建了一个45度方向的重复线性渐变,包含红、黄、蓝三个颜色,分别在0%、10%和20%位置处出现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值