1.番号を削除する
制限時間:C / C ++ 1秒、他の言語2秒
スペースの制限:C / C ++ 32M、その他の言語64M
配列a [N]には0からN-1まで順番に格納されており、2つの数値ごとに番号を削除する必要があります。最後に到達したら、最初にループして続行し、最後に削除された番号の元の添え字位置を見つけます。例として8つの数値(N = 7)を取り上げます:{0、1、2、3、4、5、6、7}、0-> 1-> 2(削除済み)-> 3-> 4-> 5(削除)-> 6-> 7-> 0(削除)なので、最後の番号が削除されるまで循環します。
説明を入力してください:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
出力の説明:
一行输出最后一个被删掉的数的原始下标位置。
入力例1:
8
出力例1:
6
コードの実装:
インポートシステム
sys.stdinの
行の
場合:n = int(line)n> 1000の場合:
n = 1000
a = [i for i in range(n)]
i、deletes、k = -1、0、0
while deletes <n:
k = 0
while k <= 2:
i + = 1
i = i%n
if a [i] == -1:
continue
k + = 1
a [i] = -1
deletes + = 1
print(i)
【プログラミング質問】文字セット
制限時間:C / C ++ 1秒、他の言語2秒
スペースの制限:C / C ++ 32M、その他の言語64M
文字列を入力して、文字列に含まれる文字セットを検索します
説明を入力してください:
每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。
出力の説明:
每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。
入力例1:
abcqweracb
出力例1:
abcqwer
コードの実装:
インポートシステム
sys.stdinの行の場合:
d = {}
s = ''
cの行の
場合:cがdおよびcにない場合!= '\ n':
s + = c
d [c] = 1
print(s)
【プログラミング問題】数独
制限時間:C / C ++ 1秒、他の言語2秒
スペースの制限:C / C ++ 32M、その他の言語64M
数独は私たちがよく知っている古典的なゲームです。コンピュータを使用すると、数独パズルをすばやく解くことができます。簡単な数独の問題がいくつかあります。解くためのプログラムを作成してください。
説明を入力してください:
输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。
出力の説明:
输出九行,每行九个空格隔开的数字,为解出的答案。
コードの実装:
import sys
import copy
def check_results(results, i, j):
row = results[i]
for m in range(0, j):
if row[m] == row[j]:
return False
for n in range(0, i):
if results[n][j] == results[i][j]:
return False
k, l = i//3, j//3
for m in range(k*3, i+1):
for n in range(l*3, l*3+3):
if m == i and n == j:
return True
if results[m][n] == results[i][j]:
return False
return True
def prt_results(results):
for row in results:
s = ''
for col in row:
s += ' ' + str(col)
print(s)
def get_sd(a, i=0, j=0, results=None):
if results is None:
results = copy.deepcopy(a)
if a[i][j] != 0:
if j < 8:
get_sd(a, i, j+1, results)
elif i < 8:
get_sd(a, i+1, 0, results)
else:
prt_results(results)
sys.exit(0)
else:
for s in range(1, 10):
results[i][j] = s
if not check_results(results, i, j):
continue
else:
if i == 8 and j == 8:
prt_results(results)
sys.exit(0)
elif j < 8:
get_sd(a, i, j+1, results)
elif i < 8:
get_sd(a, i+1, 0, results)
results[i][j] = 0
return results
if __name__ == "__main__":
a=[[0 for _ in range(9)] for _ in range(9)]
get_sd(a, 0, 0