神奇的数列之“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代码:

 1 import java.util.*;
 2 
 3 public class Main{
 4     public static void main(String[] args){
 5         Scanner sc = new Scanner(System.in);
 6         long T = sc.nextLong();
 7         long k = 1L;
 8         while(T > 0){
 9             long x = sc.nextLong();
10             long y = sc.nextLong();
11             long sum = 0L;
12             long mod = -1L;
13             if(x == 0 && y != 0){System.out.println("Case #" + k + ": 2");}
14             else if(x != 0 && y == 0){System.out.println("Case #" + k + ": 2");}
15             else if(x == 0 && y == 0){System.out.println("Case #" + k + ": 1");}
16             else{
17                 while(mod != 0){
18                     if(x < y){long t = x;x = y;y = t;}
19                     sum = sum + x/y;
20                     mod = x%y;
21                     x = mod;
22                 }
23                 sum = sum + 1;
24                 System.out.println("Case #" + k + ": " + sum);
25             }
26             k = k + 1;T = T - 1;
27         }
28     }
29 }

 

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

转载于:https://www.cnblogs.com/love-fromAtoZ/p/7244176.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值