第十二届蓝桥杯大赛模拟赛(第三期)java组:第四题:最长序列

第十二届蓝桥杯大赛模拟赛(第三期)java组:第四题:最长序列
问题描述:
对于整数 v 和 p,定义 Pierce 序列为:
  a[1] = v
  a[i] = p % a[i-1]
  例如,当 v = 8, p = 21 时,对应的 Pierce 序列为
  a[1] = 8
  a[2] = 5
  a[3] = 1
  再往后计算,值变为 0,不在我们考虑的范围内。因此当 v = 8, p = 21 时, Pierce 序列的长度为 3。
  当 p 一定时,对于不同的 v 值,Pierce 序列的长度可能不同。当 p = 8 时,若 1<=v<p,最长的 Pierce 序列出现在 v=13时,为(13, 8, 5, 1),长度为 4。
  当 p=2021 时,最长的 Pierce 序列出现在 v=1160 时,请问这个序列有多长?
————————————————————————————————————————
分析:题目有点小问题,
我觉得应该改成,当 p = 21 时,若 1<=v<p,最长的 Pierce 序列出现在 v=13时,为(13, 8, 5, 1),长度为 4。
————————————————————————————————————————

public class Main4 {
public static void main(String[] args) {
		int count = Integer.MIN_VALUE;
		int temp = 0;
		for(int i=1;i<2021;i++) {
			//依次传入i到check中
			//如果返回的值比当前count中的值大则覆盖,否则不做改变
			temp = check(i, 2021);
			if(temp>count) {
				count = temp;
			}
		}
		//输出最大的长度
		System.out.println(count);
	}
	public static int check(int i, int p) {
		//第一个数为i,所以count初始为1
		int count = 1;
		int temp = i;
		while(true) {
			if(i==0) {
				break;
			}
			i = p%i;
			//最后一次i会为0
			if(i!=0) {
				count++;
			}
		}
		return count;
	}
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不坦然

承蒙厚爱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值