码迷,mamicode.com
首页 > 其他好文 > 详细

神奇的数列之“Last Defence ”

时间:2017-07-27 12:46:25      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:ext   div   bsp   util   last   除法   输入   enc   fence   

题目大意:给你两个数字,之后的每个数字都等于这两个数字之差的绝对值。问这列数字有多少个不同的数字。

样例输入/输出:input  7 4;output  6;

解题思路:此题使用辗转相除法的思想。首先两个数字x,y(假定y>x),则一定存在y=kx+b;例如100和7。

然后会发现这个数列是  100 7 93 86 7 79 72 7......那么这个数列中不同的数字应该是100/7个  最后会得到  7  2...... ;

然后重复上述动作,直至出现0;

AC代码:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        long T = sc.nextLong();
        long k = 1L;
        while(T > 0){
            long x = sc.nextLong();
            long y = sc.nextLong();
            long sum = 0L;
            long mod = -1L;
            if(x == 0 && y != 0){System.out.println("Case #" + k + ": 2");}
            else if(x != 0 && y == 0){System.out.println("Case #" + k + ": 2");}
            else if(x == 0 && y == 0){System.out.println("Case #" + k + ": 1");}
            else{
                while(mod != 0){
                    if(x < y){long t = x;x = y;y = t;}
                    sum = sum + x/y;
                    mod = x%y;
                    x = mod;
                }
                sum = sum + 1;
                System.out.println("Case #" + k + ": " + sum);
            }
            k = k + 1;T = T - 1;
        }
    }
}

 一定要注意若是两个数字有一个是0,那么输出2,都是0,输出1.

神奇的数列之“Last Defence ”

标签:ext   div   bsp   util   last   除法   输入   enc   fence   

原文地址:http://www.cnblogs.com/love-fromAtoZ/p/7244176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!