首页 > 代码库 > 神奇的数列之“Last Defence ”
神奇的数列之“Last Defence ”
题目大意:给你两个数字,之后的每个数字都等于这两个数字之差的绝对值。问这列数字有多少个不同的数字。
样例输入/输出: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 ”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。