659A. Round House
题目地址
题目大意
一个圆房子,有n个入口,1到n顺时针排列。小明现在在a入口,问经过b个入口小明在哪个入口。b为正表示顺时针走,b为负逆时针。
输入输出
input
6 2 -5
output
3
input
5 1 3
output
4
input
3 2 7
output
3分析
逆时针经过b个入口(-b),表示顺时针经过(n-b)%n个入口。所以此刻在a+(n+b)%n入口,注意这个值有可能>n,所以需要模n。
相关代码
1
2
3
4
5n,a,b=map(int,raw_input().split())
ans=a+(n+b)%n
if ans>n:
ans=ans%n
print ans
656A. Da Vinci Powers
题目地址
题目大意
输入a(0 ≤ a ≤ 35),输出一个整数。
输入输出
input
3
output
8
input
10
output
1024
input
35
output
33940307968分析
并不是求2的阶乘
Da Vinci在计算2的13次方时,使用4096*2=8192,少进了一位,变成8092,后面的直接乘以2就都是错的相关代码
1
2
3
4
5
6n=int(raw_input())
x=8092
if n<13:
print 2**n
else:
print 2**(n-13)*x
634A. Island Puzzle
题目地址
题目大意
有一个环形岛屿链,其中岛屿编号从1到n。给出这n个岛上雕像的个数,以及期望的雕像个数,问能不能通过移动雕像达到期望。
在这n个岛中,只有一个岛上没有雕像,移动规则:每次只能把雕像移到雕像数为0的岛上。输入输出
input
3
1 0 2
2 0 1
output
YES
input
2
1 0
0 1
output
YES
input
4
1 2 3 0
0 3 2 1
output
NO分析
只能往没有雕像的岛屿移动,所以只有0在不停移动,这些岛屿中雕像数的相对位置是不变的。
ai存当前雕像序列,bi存期望雕像序列,将0从序列中删除。temp=ai.index(bi[0])
定位bi[0]在ai中的位置,bi序列只可能是ai[temp:]+ai[:temp]
。相关代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16def func():
n=int(raw_input())
ai=map(int,raw_input().split())
bi=map(int,raw_input().split())
del ai[ai.index(0)]
del bi[bi.index(0)]
temp=ai.index(bi[0])
ai=ai[temp:]+ai[:temp]
for i in range(n-1):
if ai[i]!=bi[i]:
print "NO"
return
print "YES"
return
func()