首页 > 其他 > 详细

神奇的数列之“Last Defence ”

时间:2017-07-27 12:29:57      阅读:282      评论:0      收藏:0      [点我收藏+]

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

样例输入/输出: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 ”

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!