怎样确定循环节

---恢复内容开始---

 有人把循环小数0.535353……简记成下面的几种结果:

  

请问这些结果都正确吗?为什么?

我想,我们已经学会了怎样把一个循环小数化成分数.那么,回答这个问题最好的办法就是把这些简记结果都化成分数,再看这些分数结果有无区别。

聪明的读者,这个问题就请你亲自动手换算后再来回答.好吗?

【规律】

  

  

 所以这些简记结果都是正确的.

一般地,同一个循环小数的循环节可以有多种简记方法.假设循环小数中有n个数字不断重复出现,那么简记后的循环节可以有n位数字,也可以有2n 位数字、3n位数字、……;循环节的第一位数字可以是不断重复出现的第一位数字,也可以是第二位数字、第三位数字…….但是,只有以重复出现的第一位数字作循环节的第一位数字,取n位数为循环节的简记方法最为简单.

【练习】

1.有人把循环小数0.787878……简记成下面的结果:

  
    请你判定哪些是正确的,哪些是错误的.

2.对于下面的每个循环小数,请你至少写出五个简记结果.

0.464646…… 0.123123123……

3.用最简单的形式简记下列各循环小数.

0.878787…… 0.638638638……

0.4172172172…… 0.1991991991……

4.你有办法验证下面的数是相等的吗?

  

 

---恢复内容结束---

 有人把循环小数0.535353……简记成下面的几种结果:

  

请问这些结果都正确吗?为什么?

我想,我们已经学会了怎样把一个循环小数化成分数.那么,回答这个问题最好的办法就是把这些简记结果都化成分数,再看这些分数结果有无区别。

聪明的读者,这个问题就请你亲自动手换算后再来回答.好吗?

【规律】

  

  

 所以这些简记结果都是正确的.

一般地,同一个循环小数的循环节可以有多种简记方法.假设循环小数中有n个数字不断重复出现,那么简记后的循环节可以有n位数字,也可以有2n 位数字、3n位数字、……;循环节的第一位数字可以是不断重复出现的第一位数字,也可以是第二位数字、第三位数字…….但是,只有以重复出现的第一位数字作循环节的第一位数字,取n位数为循环节的简记方法最为简单.

【练习】

1.有人把循环小数0.787878……简记成下面的结果:

  
    请你判定哪些是正确的,哪些是错误的.

2.对于下面的每个循环小数,请你至少写出五个简记结果.

0.464646…… 0.123123123……

3.用最简单的形式简记下列各循环小数.

0.878787…… 0.638638638……

0.4172172172…… 0.1991991991……

4.你有办法验证下面的数是相等的吗?

  


 

Problem D

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 102   Accepted Submission(s) : 33

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

A number sequence is defined as follows:

f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.

Given A, B, and n, you are to calculate the value of f(n).

Input

The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.

Output

For each test case, print the value of f(n) on a single line.

Sample Input

1 1 3
1 2 10
0 0 0

Sample Output

2
5

import java.util.Scanner;


public class Main4 {

 public static void main(String[] args) {
  Scanner cin = new Scanner(System.in);
  while(cin.hasNext()){
   int  a = cin.nextInt();
   int  b = cin.nextInt();
   int  n = cin.nextInt();
   int[] arr = new int[100];
   arr[0]=1;
   arr[1]=1;
   int i=0;
   while(a!=0&&b!=0&&n!=0){
    for( i=2;i<50;i++){         //确定循环节
     arr[i]=((int)(a*arr[i-1]+b*arr[i-2]))%7; 
     if(arr[i]==1&&arr[i-1]==1){
      break;
     }
    }
    i--;
    System.out.println(arr[(n-1)%i]);
     a = cin.nextInt();
      b = cin.nextInt();
      n = cin.nextInt();
   }
  }
 }

}

原文地址:https://www.cnblogs.com/qjack/p/3366534.html