进击高手【第五期】思维题

本文收集了一系列有趣的编程思维题目,包括序列操作、蚱蜢跳跃、数字构成和羊群排列等,旨在锻炼和提升编程者的逻辑思维和问题解决能力。通过分析和解决这些题目,你可以学习到如何运用不同的算法和策略来解决实际问题。
摘要由CSDN通过智能技术生成

今天,我们放松一下,做一些简单的思维题目。

*3 or /2

题目描述
随着第100届初学者大赛的举行,AC的办公室被装饰成一个长度为N,a={a1,a2,a3,…,aN}的序列。作为一名员工,斯努克想要玩这个序列。
具体来说,他希望尽可能多地重复以下操作:
对于每一个满足1 <= i <= N的i,执行以下操作之一:“将ai除以2”和“将ai乘以3”。
不能对于每个i都选择“ai乘以3”,至少有一个“将ai除以2”操作,操作之后的ai值必须是一个整数。最多可以执行多少个操作?

样例输入

3
5 2 4

样例输出

3

样例解释

这个序列最初是5 2 4。可执行以下三种操作:
首先,a1乘以3,a2乘以3,a3除以2。现在的序列是15 6 2。
接下来,a1乘以3,a2除以2,a3乘以3。现在的序列是45 3 6。
最后,a1乘以3,a2乘以3,a3除以2。现在的序列是135 9 3。
————————————————————分割线———————————————————————

这道题不想多说,看到题目立刻想到求输入的数可以除以多少个2.代码便不上了。

弹跳蚱蜢

题目描述
现在,有一只蚱蜢位于一个数轴上处。
因为蚱蜢非常喜欢正整数,因此,在最开始的第一分钟,它会向前跳1个单位的长度,在第二分钟,它会向前跳2个单位的长度,以此类推。而蚱蜢觉得一直的往前跳跃也没啥意思,因此,它规定,如果在这一次跳跃前,它处于的点坐标为偶数,那么,它就会向左跳,否则,它才会向右跳。
现在,已知蚱蜢最初始的坐标点的大小,请你求出当蚱蜢跳跃次以后到达的位置。

输入格式
第一行输入一个数字,表示样例的测试数量。
接下来行,每行两个数字,第一个数字表示蚱蜢的初始位置,第二个数字表示跳跃的次数。

样例输入

9
0 1
0 2
10 10
10 99
177 13
10000000000 987654321
-433494437 87178291199
1 0
-1 1

样例输出

-1
1
11
110
190
9012345679
-87611785637
1
0

这道题画一个草图,便可以知道将跳跃次数按照%4的答案进行分类讨论。
而且还要将最初始的坐标点的奇偶分类讨论

请添加图片描述

便可得以下代码

if(!(x & 1)){
   
	if(n % 4 == 1) printf("%lld\n", x - n);i
	if(n % 4 == 2) printf("%lld\n", x + 1);
	if(n % 4 == 3) printf("%lld\n", x + 1 + n);
	if(n % 4 == 0) printf("%lld\n", x);
} else {
   
	if(n % 4 == 1) printf("%lld\n", x + n);
	if(n % 4 == 2) printf("%lld\n", x - 1);
	if(n % 4 == 3) printf("%lld\n", x - 1 - n);
	if(n % 4 == 0) printf("%lld\n", x);	
}

弗林特船长漂流记

请添加图片描述————————————————————分割线———————————————————————

细读题目,你会发现数字的构成,只有两种9(1001),8(1000),全是4位,7(111)为什么不行,因为只有3位。
n=1时,9,8均可,选最小,那么x = 8(1000)
n=2时,99,98均可,选最小,那么x = 98(10011000)
n=3时,999,998均可,选最小,那么x = 998(100110011000)
n=4时,9999,9998均可,选最小,那么x = 9998(1001100110011000)
n=5时,99999,99998,99988均可,选最小,那么x = 99988(10011001100110001000)
n&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值