202 - Repeating Decimals

本文介绍了一种通过编程求解任意分数循环节的方法,并详细解释了如何通过模拟除法找到循环节开始的位置。

The decimalexpansion of the fraction 1/33 is  ,where the  isused to indicate that the cycle 03 repeats indefinitely with no interveningdigits. In fact, the decimal expansion of every rational number (fraction) hasa repeating cycle as opposed to decimal expansions of irrational numbers, whichhave no such repeating cycles.

Examples ofdecimal expansions of rational numbers and their repeating cycles are shownbelow. Here, we use parentheses to enclose the repeating cycle rather thanplace a bar over the cycle.

Write a programthat reads numerators and denominators of fractions and determines theirrepeating cycles.

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

Input

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

Output

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

In writing thedecimal expansion, enclose the repeating cycle in parentheses when possible. Ifthe entire repeating cycle does not occur within the first 50 places, place aleft parenthesis where the cycle begins - it will begin within the first 50places - and place ``...)" after the50th digit.

Print a blank lineafter 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


 

#include<iostream>

using namespace std;

const int N=2000;

int result[N];//存取结果

int mod[N];//存取余数

int main()

{

    int a,b;

    while(cin>>a>>b)

    {

        int length;

        result[0]=a/b;

        mod[0]=a%b;

        int i,j;

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

        {

            int flag=0;

            result[i]=mod[i-1]*10/b;

            mod[i]=mod[i-1]*10%b;

            for( j=0;j<i;j++)

            {

                if(mod[j]==mod[i])

                {

                    length=i-j;

                    flag=1;

                    break;

                }

            }

            if(flag==1)

            {

                break;

            }

        }

       cout<<a<<"/"<<b<<" ="<<result[0]<<".";

        for(int k=1;k<j+1;k++)

        {

            cout<<result[k];

        }

        cout<<"(";

        if(i<=50)

        {

            for(int k=j+1;k<=i;k++)

            {

                cout<<result[k];

            }

            cout<<")\n";

        }

        else

        {

            for(int k=j+1;k<=50;k++)

            {

                cout<<result[k];

            }

            cout<<"...)\n";

        }

        cout<<"   "<<length<<" = numberof digits in repeating cycle\n\n";

    }

}

这题需要模拟除法,当出现相同的余数时,就代表循环点的出现。下面我以5/7为例详细的讲下思路。

      如上图,第0步,分子是5,分母是7(分母在整个除法中始终不变),5/7的商是0,代表这个除法的整数部分是0,,余数是5,乘以10,得50作为第1步的分子;50/7的商为7,代表这个除法的第一位小数是7,余数是1,乘以10,得10作为第2步的分子...可以发现每步的除法只跟分子有关,也就是当分子出现重复值,如上图第1步和第7步的分子值都为50时,第7步后面的运算其实是在重复第1步至第6步间的运算。所以第1步至第7步就是一个循环节。

程序实现中,可以不用存储余数的值,只需存储上图中的分子和商,我定义了A[2][3010](注意循环长度一定不会大于分母,也就是3000次内一定会出现循环),用A[0][j]存储第j步的分子,A[1][j]存储第j步的商。注意最后的数值由商可以直接构成,如上图的红色字体,数值为0.7142857142...

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、付费专栏及课程。

余额充值