블루 브리지 컵 역대 시험문제 순환절 길이

2256 단어
루프 길이
두 정수를 나누면 때때로 순환 소수가 발생하는데 그 순환 부분을 순환절이라고 부른다.예를 들어 11/13=6=>0.846153153......그 순환절은 [846153]로 모두 6위이다.아래의 방법은 순환절의 길이를 구할 수 있다.
코드를 자세히 읽고 밑줄 친 부분에 부족한 코드를 기입하세요.
public static int f(int n, int m)
{
    n = n % m;  
    Vector v = new Vector();

    for(;;)
    {
        v.add(n);
        n *= 10;
        n = n % m;
        if(n==0) return 0;
        if(v.indexOf(n)>=0)  _________________________________ ;  //  
    }
}

부족한 부분만 작성할 수 있으니 기존 코드를 반복해서 베끼지 마세요.아무런 여분의 문자도 기입하지 마라.
한 순환절에 중복된 숫자, 예를 들어 3/17이 있을 수 있기 때문에 소수점 뒤의 숫자에 따라 분석할 수 없다.이 문제는 매번 계산된 여수가 이전과 같은지 확인함으로써 순환절의 길이를 판단한다.나머지가 일단 같으면 10을 곱한 후 나머지를 나누어도 필연적으로 같기 때문이다.
package holiday;

import java.util.Vector;

public class Main {
                public static int f(int n, int m)
                {
                        n = n % m;        
                        Vector v = new Vector();

                        for(;;)
                        {
                                v.add(n);
                                n *= 10;
                                n = n % m;
                                if(n==0) return 0;
                                if(v.indexOf(n)>=0)  return v.size()-v.indexOf(n) ;  
                        }
                }

        public static void main(String[] args) {
                System.out.println(f(11,13));
        }
}

좋은 웹페이지 즐겨찾기