سیب که رنگی نیست، تخم مرغ!
امین با روحیه گرافی خود سعی کرد از ظرف تخم مرغ رنگی روی سفره هفتسین سوال طرح کند. او تعداد تخم مرغ رنگیهای توی ظرف را که �n بود شمرد و گراف �G را با �n راس ساخت. سپس بین هر دو تخم مرغی که با یکدیگر در تماس بودند یال کشید. میدانیم رنگ تخم مرغها با یکدیگر متفاوت است. سپس به ازای هر تخم مرغ لیستی درست کرد که شامل رنگ همان تخم مرغ و رنگ تمام تخم مرغهای مجاور با آن در گراف �G بود.
سیبسیب نماد سلامتی و زیبایی است.علی که بسیار شیطون است، همه تخم مرغها را بیرنگ کرد و زیبایی آنها را از بین برد. امین از این اتفاق خوشحال نیست. او میخواهد تخم مرغها را دوباره رنگ کند و ظرف تخم مرغ رنگیها به شکل قبلی خود برگردد. با داشتن گراف �G و لیستهایی که امین برای هر تخم مرغ درست کرده است، تخم مرغها را بازآرایی کنید.
ورودیدر سطر اول دو عدد صحیح �n و �m، تعداد تخم مرغها و تعداد یالهای میان رئوس متناظر تخم مرغها به ترتیب میآیند.
در هر یک از �m سطر بعدی، دو عدد صحیح �v و �u میآیند که یالهای گراف �G را مشخص میکنند.
در سطر �i-ام از �n سطر بعدی، ��+1d i +1 عدد صحیح میآیند که لیست مربوط به تخم مرغ �i-ام را مشخص میکنند. ��d i تعداد تخم مرغهای مجاور تخم مرغ �i-ام است. تضمین میشود رنگها عددی بین 11 تا �n هستند. همچنین تضمین میشود حداقل یک حالت برای رنگآمیزی تخم مرغها وجود دارد.
1≤�,�≤10001≤n,m≤1000
خروجیدر تنها سطر خروجی �n عدد چاپ کنید که رنگ تخم مرغها را نشان میدهد. در صورتی که چندین حالت برای رنگآمیزی تخم مرغها وجود داشت، یکی را به دلخواه چاپ کنید.
مثالهاورودی نمونه ۱4 41 22 33 44 11 2 32 3 43 4 14 1 2Plain textخروجی نمونه ۱2 3 4 1
امین با روحیه گرافی خود سعی کرد از ظرف تخم مرغ رنگی روی سفره هفتسین سوال طرح کند. او تعداد تخم مرغ رنگیهای توی ظرف را که �n بود شمرد و گراف �G را با �n راس ساخت. سپس بین هر دو تخم مرغی که با یکدیگر در تماس بودند یال کشید. میدانیم رنگ تخم مرغها با یکدیگر متفاوت است. سپس به ازای هر تخم مرغ لیستی درست کرد که شامل رنگ همان تخم مرغ و رنگ تمام تخم مرغهای مجاور با آن در گراف �G بود.
سیبسیب نماد سلامتی و زیبایی است.علی که بسیار شیطون است، همه تخم مرغها را بیرنگ کرد و زیبایی آنها را از بین برد. امین از این اتفاق خوشحال نیست. او میخواهد تخم مرغها را دوباره رنگ کند و ظرف تخم مرغ رنگیها به شکل قبلی خود برگردد. با داشتن گراف �G و لیستهایی که امین برای هر تخم مرغ درست کرده است، تخم مرغها را بازآرایی کنید.
ورودیدر سطر اول دو عدد صحیح �n و �m، تعداد تخم مرغها و تعداد یالهای میان رئوس متناظر تخم مرغها به ترتیب میآیند.
در هر یک از �m سطر بعدی، دو عدد صحیح �v و �u میآیند که یالهای گراف �G را مشخص میکنند.
در سطر �i-ام از �n سطر بعدی، ��+1d i +1 عدد صحیح میآیند که لیست مربوط به تخم مرغ �i-ام را مشخص میکنند. ��d i تعداد تخم مرغهای مجاور تخم مرغ �i-ام است. تضمین میشود رنگها عددی بین 11 تا �n هستند. همچنین تضمین میشود حداقل یک حالت برای رنگآمیزی تخم مرغها وجود دارد.
1≤�,�≤10001≤n,m≤1000
خروجیدر تنها سطر خروجی �n عدد چاپ کنید که رنگ تخم مرغها را نشان میدهد. در صورتی که چندین حالت برای رنگآمیزی تخم مرغها وجود داشت، یکی را به دلخواه چاپ کنید.
مثالهاورودی نمونه ۱4 41 22 33 44 11 2 32 3 43 4 14 1 2Plain textخروجی نمونه ۱2 3 4 1
۱۵:۴۳
from collections import defaultdict
def color_eggs(n, m, edges, color_lists): graph = defaultdict(list)
# ساخت گراف for u, v in edges: graph[u].append(v) graph[v].append(u)
colors = [0] * (n + 1) # آرایه رنگهای تخصیص دادهشده
# رنگآمیزی تخممرغها for i in range(1, n + 1): available_colors = set(color_lists[i]) # لیست رنگهای مجاز برای این تخممرغ
# رنگ همسایهها را جمعآوری کن neighbor_colors = {colors[neighbor] for neighbor in graph[i] if colors[neighbor] != 0}
# انتخاب کوچکترین رنگ معتبر for color in available_colors: if color not in neighbor_colors: colors[i] = color break
return colors[1:]
# خواندن ورودیdef main(): n, m = map(int, input().split()) edges = [tuple(map(int, input().split())) for in range(m)]
color_lists = {i + 1: list(map(int, input().split()))[1:] for i in range(n)}
result = color_eggs(n, m, edges, color_lists)
print(*result)
if _name == "__main__": main()
def color_eggs(n, m, edges, color_lists): graph = defaultdict(list)
# ساخت گراف for u, v in edges: graph[u].append(v) graph[v].append(u)
colors = [0] * (n + 1) # آرایه رنگهای تخصیص دادهشده
# رنگآمیزی تخممرغها for i in range(1, n + 1): available_colors = set(color_lists[i]) # لیست رنگهای مجاز برای این تخممرغ
# رنگ همسایهها را جمعآوری کن neighbor_colors = {colors[neighbor] for neighbor in graph[i] if colors[neighbor] != 0}
# انتخاب کوچکترین رنگ معتبر for color in available_colors: if color not in neighbor_colors: colors[i] = color break
return colors[1:]
# خواندن ورودیdef main(): n, m = map(int, input().split()) edges = [tuple(map(int, input().split())) for in range(m)]
color_lists = {i + 1: list(map(int, input().split()))[1:] for i in range(n)}
result = color_eggs(n, m, edges, color_lists)
print(*result)
if _name == "__main__": main()
۱۵:۵۷
بازارسال شده از چالش بچه های ۸۰۶
صرافی ارز دیجیتال بیتپین �n رمزارز مختلف دارد که با اعداد 11 تا �n شمارهگذاری شدهاند، هر کدام از رمزارزها دو رو دارند. یک رو قدرت که عدد نوشته شده بر آن عدد قدرت آن رمزارز نامیده میشود و آن را با ��p i نشان میدهیم. یک رو زیبایی که عدد نوشته شده بر آن عدد زیبایی آن رمزارز را مشخص میکند و آن را با ��b i نشان میدهیم.
سکهسکه نماد رونق و ثروت است.دو عدد به نام اعداد زیبایی و قدرت سال وجود دارد که عدد زیبایی سال از بین اعداد زیبایی نوشته شده روی رمزارزها انتخاب میشود و عدد قدرت سال نیز از بین اعداد قدرت نوشته شده بر روی رمز ارزها انتخاب میشود. قدرت سال را با �P و زیبایی سال را با �B نشان میدهیم. هر رمزارز اگر حداقل یکی از عدد قدرت و یا زیبایی آن بیشتر و یا مساوی عدد متناظرش در سال باشد، میتواند بهجای سکه بر روی سفره هفت سین قرار بگیرد. به بیان دیگر رمزارز شمارهی �i روی میز قرار میگیرد اگر ��≥�p i ≥P یا ��≥�b i ≥B باشد (1≤�≤�1≤i≤n).
میخواهیم اعداد زیبایی و قدرت سال را از بین اعداد زیبایی و قدرتی که بین رمزارزها وجود دارد به شکلی تعیین کنیم که مجموع دو عدد تعیین شده برای زیبایی و قدرت بیشترین مقدار ممکن باشد و همچنین همه رمزارزهای بیتپین بتوانند بر روی سفره هفتسین قرار بگیرند.
برای شما �t بار این مسأله از اول مطرح میشود و هر بار از شما میخواهیم، این بیشترین مجموع را برای مسأله یا همان تست مد نظر خروجی دهید.
ورودیدر سطر اول عدد �t، تعداد تستها میآید.در اولین سطر هر تست، عدد صحیح �n، تعداد بینکوینهای بیتپین میآید.در دومین سطر هر تست، �n عدد صحیح �1,�2,�3,⋯,��b 1 ,b 2 ,b 3 ,⋯,b n بهترتیب میآیند که نشاندهنده زیبایی رمزارزهای بیتپین است. در سومین سطر هر تست، �n عدد صحیح �1,�2,�3,⋯,��p 1 ,p 2 ,p 3 ,⋯,p n بهترتیب میآیند که نشاندهنده قدرت رمزارزهای بیتپین است.
1≤�≤2000001≤t≤2000001≤�≤2000001≤n≤2000001≤��,��≤1091≤b i ,p i ≤10 9
تضمین میشود که مجموع �n برای همه �t تست حداکثر 200000200000 است.
خروجیبیشترین مجموع ممکن با شرایط گفته شده برای زیبایی و قدرت سال را خروجی دهید.
سکهسکه نماد رونق و ثروت است.دو عدد به نام اعداد زیبایی و قدرت سال وجود دارد که عدد زیبایی سال از بین اعداد زیبایی نوشته شده روی رمزارزها انتخاب میشود و عدد قدرت سال نیز از بین اعداد قدرت نوشته شده بر روی رمز ارزها انتخاب میشود. قدرت سال را با �P و زیبایی سال را با �B نشان میدهیم. هر رمزارز اگر حداقل یکی از عدد قدرت و یا زیبایی آن بیشتر و یا مساوی عدد متناظرش در سال باشد، میتواند بهجای سکه بر روی سفره هفت سین قرار بگیرد. به بیان دیگر رمزارز شمارهی �i روی میز قرار میگیرد اگر ��≥�p i ≥P یا ��≥�b i ≥B باشد (1≤�≤�1≤i≤n).
میخواهیم اعداد زیبایی و قدرت سال را از بین اعداد زیبایی و قدرتی که بین رمزارزها وجود دارد به شکلی تعیین کنیم که مجموع دو عدد تعیین شده برای زیبایی و قدرت بیشترین مقدار ممکن باشد و همچنین همه رمزارزهای بیتپین بتوانند بر روی سفره هفتسین قرار بگیرند.
برای شما �t بار این مسأله از اول مطرح میشود و هر بار از شما میخواهیم، این بیشترین مجموع را برای مسأله یا همان تست مد نظر خروجی دهید.
ورودیدر سطر اول عدد �t، تعداد تستها میآید.در اولین سطر هر تست، عدد صحیح �n، تعداد بینکوینهای بیتپین میآید.در دومین سطر هر تست، �n عدد صحیح �1,�2,�3,⋯,��b 1 ,b 2 ,b 3 ,⋯,b n بهترتیب میآیند که نشاندهنده زیبایی رمزارزهای بیتپین است. در سومین سطر هر تست، �n عدد صحیح �1,�2,�3,⋯,��p 1 ,p 2 ,p 3 ,⋯,p n بهترتیب میآیند که نشاندهنده قدرت رمزارزهای بیتپین است.
1≤�≤2000001≤t≤2000001≤�≤2000001≤n≤2000001≤��,��≤1091≤b i ,p i ≤10 9
تضمین میشود که مجموع �n برای همه �t تست حداکثر 200000200000 است.
خروجیبیشترین مجموع ممکن با شرایط گفته شده برای زیبایی و قدرت سال را خروجی دهید.
۱۶:۴۳
import sys
input = sys.stdin.readdata = input().splitlines()
index = 0t = int(data[index])index += 1result = []
for _ in range(t): n = int(data[index]) index += 1 b = list(map(int, data[index].split())) index += 1 p = list(map(int, data[index].split())) index += 1
max_b = max(b) max_p = max(p)
result.append(str(max_b + max_p))
sys.stdout.write("\n".join(result) + "\n")
input = sys.stdin.readdata = input().splitlines()
index = 0t = int(data[index])index += 1result = []
for _ in range(t): n = int(data[index]) index += 1 b = list(map(int, data[index].split())) index += 1 p = list(map(int, data[index].split())) index += 1
max_b = max(b) max_p = max(p)
result.append(str(max_b + max_p))
sys.stdout.write("\n".join(result) + "\n")
۱۶:۴۵
t = int(input()) # تعداد تستها
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
print(max_b + max_p) # بیشترین مجموع زیبایی و قدرت
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
print(max_b + max_p) # بیشترین مجموع زیبایی و قدرت
۱۶:۴۶
ورودی نمونه ۱311013310 3 51 3 751 1 1 1 57 1 1 1 1Plain textخروجی نمونه ۱23138
۱۶:۴۷
t = int(input()) # تعداد تستها
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
print(max_b + max_p) # بیشترین مجموع زیبایی و قدرت
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
print(max_b + max_p) # بیشترین مجموع زیبایی و قدرت
۱۶:۴۸
t = int(input()) # تعداد تستها
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
result = -1 for B in range(max_b + 1): for P in range(max_p + 1): if all(bi >= B or pi >= P for bi, pi in zip(b, p)): result = max(result, B + P)
print(result)
for _ in range(t): n = int(input()) # تعداد رمزارزها b = list(map(int, input().split())) # زیبایی رمزارزها p = list(map(int, input().split())) # قدرت رمزارزها
max_b = max(b) # بیشترین زیبایی max_p = max(p) # بیشترین قدرت
result = -1 for B in range(max_b + 1): for P in range(max_p + 1): if all(bi >= B or pi >= P for bi, pi in zip(b, p)): result = max(result, B + P)
print(result)
۱۶:۴۸
حاجی فیروز تصمیم گرفته برای کمک به نوروز در مزرعه سیری مشغول به کار شود. او شروع کرد به برداشت سیرها و هر مقدار سیری را که در ساعت �iامش برداشت کرد در گونی شماره �i قرار میدهد. بعد از اتمام برداشت سیرها متوجه میشود در ساعت �iام توانسته ��a i سیر برداشت کند.
سیرسیر نماد قناعت، مناعت طبع است.حاجی فیروز که همیشه دنبال پیشرفت است، مقدار پیشرفتش در برداشت سیر در ساعت �iام (1<�1<i) را برابر مقدار زیر قرار میدهد.���(0,��−���1≤�<���)max(0,a i −max 1≤j<i a j )
که ناگهان �q سوال بسیار مهم به ذهن حاجی فیروز رسید. سوالهای حاجی فیروز دو نوع بودند.
نوع اول: «چی میشد اگر تو ساعت کاری �i عوض انقدری که سیر برداشت کردم �x سیر برداشت میکردم؟»نوع دوم: «الان مجموع پیشرفت من از ساعت �l تا ساعت �r چقدر است؟» (دقت کنید که پیشرفت در ساعتهای �lام و �rام هم حساب هستند.)حواستان باشد که وقتی حاجی فیروز سؤالی از نوع دوم از خودش میپرسد تمام تغییراتی که سوالهای نوع اول که قبل از این سوال به ذهن او خطور کرده است در ذهن او اعمال شدهاند.
به حاجی فیروز کمک کنید تا به پاسخ سؤالهایش برسد.
ورودیدر سطر اول دو عدد صحیح �n و �q بهترتیب میآیند.در سطر دوم �n عدد صحیح �1,�2,�3,⋯,��a 1 ,a 2 ,a 3 ,⋯,a n بهترتیب میآیند.در هر یک از �q سطر بعدی سوالهای حاجی فیروز میآیند که هر کدام به یکی از دو شکل زیر است:
نوع اول: سه عدد 11 و �i و �x بهترتیب میآیند.نوع دوم: سه عدد 22 و �l و �r بهترتیب میآیند.1≤�,�≤2×1051≤n,q≤2×10 5
0≤��≤1090≤a i ≤10 9
1≤�≤�,0≤�≤1091≤i≤n,0≤x≤10 9
2≤�≤�≤�2≤l≤r≤n
خروجیبه ازای هر پرسمان از نوع دوم در یک سطر خروجی مربوطه را چاپ کنید.
سیرسیر نماد قناعت، مناعت طبع است.حاجی فیروز که همیشه دنبال پیشرفت است، مقدار پیشرفتش در برداشت سیر در ساعت �iام (1<�1<i) را برابر مقدار زیر قرار میدهد.���(0,��−���1≤�<���)max(0,a i −max 1≤j<i a j )
که ناگهان �q سوال بسیار مهم به ذهن حاجی فیروز رسید. سوالهای حاجی فیروز دو نوع بودند.
نوع اول: «چی میشد اگر تو ساعت کاری �i عوض انقدری که سیر برداشت کردم �x سیر برداشت میکردم؟»نوع دوم: «الان مجموع پیشرفت من از ساعت �l تا ساعت �r چقدر است؟» (دقت کنید که پیشرفت در ساعتهای �lام و �rام هم حساب هستند.)حواستان باشد که وقتی حاجی فیروز سؤالی از نوع دوم از خودش میپرسد تمام تغییراتی که سوالهای نوع اول که قبل از این سوال به ذهن او خطور کرده است در ذهن او اعمال شدهاند.
به حاجی فیروز کمک کنید تا به پاسخ سؤالهایش برسد.
ورودیدر سطر اول دو عدد صحیح �n و �q بهترتیب میآیند.در سطر دوم �n عدد صحیح �1,�2,�3,⋯,��a 1 ,a 2 ,a 3 ,⋯,a n بهترتیب میآیند.در هر یک از �q سطر بعدی سوالهای حاجی فیروز میآیند که هر کدام به یکی از دو شکل زیر است:
نوع اول: سه عدد 11 و �i و �x بهترتیب میآیند.نوع دوم: سه عدد 22 و �l و �r بهترتیب میآیند.1≤�,�≤2×1051≤n,q≤2×10 5
0≤��≤1090≤a i ≤10 9
1≤�≤�,0≤�≤1091≤i≤n,0≤x≤10 9
2≤�≤�≤�2≤l≤r≤n
خروجیبه ازای هر پرسمان از نوع دوم در یک سطر خروجی مربوطه را چاپ کنید.
۱۶:۵۲
class SegmentTree: def _init__(self, n):
self.n = n
self.tree = [0] (4 n)
def update(self, idx, val, node=1, start=1, end=None):
if end is None:
end = self.n
if start == end:
self.tree[node] = val
else:
mid = (start + end) // 2
if idx <= mid:
self.update(idx, val, 2 node, start, mid)
else:
self.update(idx, val, 2 node + 1, mid + 1, end)
self.tree[node] = self.tree[2 node] + self.tree[2 node + 1]
def query(self, l, r, node=1, start=1, end=None):
if end is None:
end = self.n
if r < start or end < l:
return 0
if l <= start and end <= r:
return self.tree[node]
mid = (start + end) // 2
left_query = self.query(l, r, 2 node, start, mid)
right_query = self.query(l, r, 2 node + 1, mid + 1, end)
return left_query + right_query
def solve():
n, q = map(int, input().split())
a = list(map(int, input().split()))
# پیشرفتها را برای همه ساعات محاسبه میکنیم
progress = [0] * n
max_a = a[0]
progress[0] = 0 # پیشرفت ساعت اول همیشه صفر است
for i in range(1, n):
progress[i] = max(0, a[i] - max_a)
max_a = max(max_a, a[i])
# از یک درخت segment برای ذخیره پیشرفتها استفاده میکنیم
seg_tree = SegmentTree(n)
# درخت را با پیشرفتهای اولیه پر میکنیم
for i in range(n):
seg_tree.update(i + 1, progress[i])
# پاسخ به سوالها
for in range(q): query = list(map(int, input().split())) if query[0] == 1: # نوع اول: 1 i x i, x = query[1], query[2] i -= 1 # تبدیل به ایندکس صفر a[i] = x # تغییر مقدار برداشت سیر در ساعت i
# پس از تغییر مقدار باید پیشرفتها را بهروزرسانی کنیم # محاسبه مجدد پیشرفتها max_a = a[0] progress[0] = 0 for j in range(1, n): progress[j] = max(0, a[j] - max_a) max_a = max(max_a, a[j])
# بهروزرسانی درخت Segment for j in range(n): seg_tree.update(j + 1, progress[j])
elif query[0] == 2: # نوع دوم: 2 l r l, r = query[1], query[2] print(seg_tree.query(l, r))
solve()
self.n = n
self.tree = [0] (4 n)
def update(self, idx, val, node=1, start=1, end=None):
if end is None:
end = self.n
if start == end:
self.tree[node] = val
else:
mid = (start + end) // 2
if idx <= mid:
self.update(idx, val, 2 node, start, mid)
else:
self.update(idx, val, 2 node + 1, mid + 1, end)
self.tree[node] = self.tree[2 node] + self.tree[2 node + 1]
def query(self, l, r, node=1, start=1, end=None):
if end is None:
end = self.n
if r < start or end < l:
return 0
if l <= start and end <= r:
return self.tree[node]
mid = (start + end) // 2
left_query = self.query(l, r, 2 node, start, mid)
right_query = self.query(l, r, 2 node + 1, mid + 1, end)
return left_query + right_query
def solve():
n, q = map(int, input().split())
a = list(map(int, input().split()))
# پیشرفتها را برای همه ساعات محاسبه میکنیم
progress = [0] * n
max_a = a[0]
progress[0] = 0 # پیشرفت ساعت اول همیشه صفر است
for i in range(1, n):
progress[i] = max(0, a[i] - max_a)
max_a = max(max_a, a[i])
# از یک درخت segment برای ذخیره پیشرفتها استفاده میکنیم
seg_tree = SegmentTree(n)
# درخت را با پیشرفتهای اولیه پر میکنیم
for i in range(n):
seg_tree.update(i + 1, progress[i])
# پاسخ به سوالها
for in range(q): query = list(map(int, input().split())) if query[0] == 1: # نوع اول: 1 i x i, x = query[1], query[2] i -= 1 # تبدیل به ایندکس صفر a[i] = x # تغییر مقدار برداشت سیر در ساعت i
# پس از تغییر مقدار باید پیشرفتها را بهروزرسانی کنیم # محاسبه مجدد پیشرفتها max_a = a[0] progress[0] = 0 for j in range(1, n): progress[j] = max(0, a[j] - max_a) max_a = max(max_a, a[j])
# بهروزرسانی درخت Segment for j in range(n): seg_tree.update(j + 1, progress[j])
elif query[0] == 2: # نوع دوم: 2 l r l, r = query[1], query[2] print(seg_tree.query(l, r))
solve()
۱۶:۵۵
def min_adjacent_pairs(n, k): # تعداد دانهها: k، تعداد جایگاهها: n if k == 1: return 0 # به طور کلی تعداد جفتهای متوالی وقتی کمینه است که دانهها به صورت پراکنده قرار گیرند # تعداد جفتها به این شکل محاسبه میشود return max(0, k - 1 - (n - k))
# خواندن ورودیn, k = map(int, input().split())
# خروجی کمترین تعداد جفتهای متوالیprint(min_adjacent_pairs(n, k))
# خواندن ورودیn, k = map(int, input().split())
# خروجی کمترین تعداد جفتهای متوالیprint(min_adjacent_pairs(n, k))
۱۷:۰۷
def max_sum_of_power_and_beauty(t, tests): results = [] for test in tests: n, beauties, powers = test max_beauty = max(beauties) max_power = max(powers) results.append(max_beauty + max_power) return results
# خواندن ورودیt = int(input()) # تعداد تستهاtests = []
for _ in range(t): n = int(input()) # تعداد رمزارزها beauties = list(map(int, input().split())) # زیبایی رمزارزها powers = list(map(int, input().split())) # قدرت رمزارزها tests.append((n, beauties, powers))
# محاسبه و چاپ خروجیresults = max_sum_of_power_and_beauty(t, tests)for result in results: print(result)
# خواندن ورودیt = int(input()) # تعداد تستهاtests = []
for _ in range(t): n = int(input()) # تعداد رمزارزها beauties = list(map(int, input().split())) # زیبایی رمزارزها powers = list(map(int, input().split())) # قدرت رمزارزها tests.append((n, beauties, powers))
# محاسبه و چاپ خروجیresults = max_sum_of_power_and_beauty(t, tests)for result in results: print(result)
۱۷:۱۰
یک جدول 3×�3×n داریم. بیتپین میخواهد تعدادی از خانههای جدول را برای عید از سماق پر کند. او به تازگی یاد گرفته است که زیبایی همیشه در تقارن نیست و گاهی زیبایی در بینظمی است. برای همین نگران است که نکند ۴ خانه از خانههای جدول باشند که از سماق پر شده باشند و چهار گوشه یک مستطیل از خانههای جدول را تشکیل دهند.
سماقسماق نماد صبر و بردباری است.با توجه به اینکه بیتپین خیلی پولدار است و میخواهد بیشترین تعداد خانه را از سماق پر کند به او بگویید چند روش مختلف برای پر کردن خانههای جدول از سماق وجود دارد که بیشترین میزان ممکن سماق پر شده باشد و همچنین شرایط بینظمی نیز برقرار باشد.
چون ممکن است تعداد روشها بسیار زیاد باشد، باقیمانده این تعداد بر +7+7 10910 9 را چاپ کنید.
ورودیدر سطر اول عدد صحیح �n میآید که نشاندهنده طول جدول است.
1≤�≤1000001≤n≤100000
خروجیدر یک سطر تعداد روشهای پر کردن سماق در جدول را چاپ کنید.
سماقسماق نماد صبر و بردباری است.با توجه به اینکه بیتپین خیلی پولدار است و میخواهد بیشترین تعداد خانه را از سماق پر کند به او بگویید چند روش مختلف برای پر کردن خانههای جدول از سماق وجود دارد که بیشترین میزان ممکن سماق پر شده باشد و همچنین شرایط بینظمی نیز برقرار باشد.
چون ممکن است تعداد روشها بسیار زیاد باشد، باقیمانده این تعداد بر +7+7 10910 9 را چاپ کنید.
ورودیدر سطر اول عدد صحیح �n میآید که نشاندهنده طول جدول است.
1≤�≤1000001≤n≤100000
خروجیدر یک سطر تعداد روشهای پر کردن سماق در جدول را چاپ کنید.
۱۷:۱۲
MOD = 10**9 + 7
def count_ways(n): # ایجاد حالتهای ممکن برای پر کردن جدول به شکلی که هیچ مستطیلی تشکیل نشود dp = [0] (n + 1)
dp[0] = 1 # فقط یک حالت برای جدول خالی وجود دارد
# برای هر ستون از جدول، تعداد حالتها را محاسبه میکنیم
for i in range(1, n + 1):
dp[i] = dp[i-1] 2 # تعداد حالتهای ممکن را برای هر ستون محاسبه میکنیم dp[i] %= MOD
return dp[n]
# گرفتن ورودیn = int(input())
# محاسبه و چاپ تعداد روشهاprint(count_ways(n))
def count_ways(n): # ایجاد حالتهای ممکن برای پر کردن جدول به شکلی که هیچ مستطیلی تشکیل نشود dp = [0] (n + 1)
dp[0] = 1 # فقط یک حالت برای جدول خالی وجود دارد
# برای هر ستون از جدول، تعداد حالتها را محاسبه میکنیم
for i in range(1, n + 1):
dp[i] = dp[i-1] 2 # تعداد حالتهای ممکن را برای هر ستون محاسبه میکنیم dp[i] %= MOD
return dp[n]
# گرفتن ورودیn = int(input())
# محاسبه و چاپ تعداد روشهاprint(count_ways(n))
۱۷:۱۳
def dfs(v, color, graph, possible_colors, colors): # برای هر تخم مرغ (رأس گراف)، رنگگذاری را انجام میدهیم. for color_option in possible_colors[v]: # بررسی اینکه این رنگ با رنگهای قبلی سازگار است یا نه valid = True for neighbor in graph[v]: if colors[neighbor] == color_option: valid = False break
if valid: colors[v] = color_option for neighbor in graph[v]: if colors[neighbor] == -1: dfs(neighbor, color, graph, possible_colors, colors) break
def color_eggs(n, m, edges, lists): # گراف را از یالها ایجاد میکنیم graph = [[] for in range(n)]
for u, v in edges:
graph[u-1].append(v-1)
graph[v-1].append(u-1)
# رنگها را به صورت لیستی از -1 (بدون رنگ) تعریف میکنیم
colors = [-1] * n
# برای هر تخم مرغ، لیست رنگهای ممکن را از ورودی میگیریم
possible_colors = []
for lst in lists:
possible_colors.append(lst[1:])
# حالا شروع به رنگآمیزی میکنیم
for i in range(n):
if colors[i] == -1: # اگر هنوز رنگگذاری نشده است
dfs(i, -1, graph, possible_colors, colors)
return colors
# خواندن ورودی
n, m = map(int, input().split())
edges = [tuple(map(int, input().split())) for in range(m)]lists = [list(map(int, input().split())) for _ in range(n)]
# حل کردن مسئلهresult = color_eggs(n, m, edges, lists)
# چاپ نتیجهprint(" ".join(map(str, result)))
if valid: colors[v] = color_option for neighbor in graph[v]: if colors[neighbor] == -1: dfs(neighbor, color, graph, possible_colors, colors) break
def color_eggs(n, m, edges, lists): # گراف را از یالها ایجاد میکنیم graph = [[] for in range(n)]
for u, v in edges:
graph[u-1].append(v-1)
graph[v-1].append(u-1)
# رنگها را به صورت لیستی از -1 (بدون رنگ) تعریف میکنیم
colors = [-1] * n
# برای هر تخم مرغ، لیست رنگهای ممکن را از ورودی میگیریم
possible_colors = []
for lst in lists:
possible_colors.append(lst[1:])
# حالا شروع به رنگآمیزی میکنیم
for i in range(n):
if colors[i] == -1: # اگر هنوز رنگگذاری نشده است
dfs(i, -1, graph, possible_colors, colors)
return colors
# خواندن ورودی
n, m = map(int, input().split())
edges = [tuple(map(int, input().split())) for in range(m)]lists = [list(map(int, input().split())) for _ in range(n)]
# حل کردن مسئلهresult = color_eggs(n, m, edges, lists)
# چاپ نتیجهprint(" ".join(map(str, result)))
۱۷:۱۹
حاجی فیروز تصمیم گرفته برای کمک به نوروز در مزرعه سیری مشغول به کار شود. او شروع کرد به برداشت سیرها و هر مقدار سیری را که در ساعت �iامش برداشت کرد در گونی شماره �i قرار میدهد. بعد از اتمام برداشت سیرها متوجه میشود در ساعت �iام توانسته ��a i سیر برداشت کند.
سیرسیر نماد قناعت، مناعت طبع است.حاجی فیروز که همیشه دنبال پیشرفت است، مقدار پیشرفتش در برداشت سیر در ساعت �iام (1<�1<i) را برابر مقدار زیر قرار میدهد.���(0,��−���1≤�<���)max(0,a i −max 1≤j<i a j )
که ناگهان �q سوال بسیار مهم به ذهن حاجی فیروز رسید. سوالهای حاجی فیروز دو نوع بودند.
نوع اول: «چی میشد اگر تو ساعت کاری �i عوض انقدری که سیر برداشت کردم �x سیر برداشت میکردم؟»نوع دوم: «الان مجموع پیشرفت من از ساعت �l تا ساعت �r چقدر است؟» (دقت کنید که پیشرفت در ساعتهای �lام و �rام هم حساب هستند.)حواستان باشد که وقتی حاجی فیروز سؤالی از نوع دوم از خودش میپرسد تمام تغییراتی که سوالهای نوع اول که قبل از این سوال به ذهن او خطور کرده است در ذهن او اعمال شدهاند.
به حاجی فیروز کمک کنید تا به پاسخ سؤالهایش برسد.
ورودیدر سطر اول دو عدد صحیح �n و �q بهترتیب میآیند.در سطر دوم �n عدد صحیح �1,�2,�3,⋯,��a 1 ,a 2 ,a 3 ,⋯,a n بهترتیب میآیند.در هر یک از �q سطر بعدی سوالهای حاجی فیروز میآیند که هر کدام به یکی از دو شکل زیر است:
نوع اول: سه عدد 11 و �i و �x بهترتیب میآیند.نوع دوم: سه عدد 22 و �l و �r بهترتیب میآیند.1≤�,�≤2×1051≤n,q≤2×10 5
0≤��≤1090≤a i ≤10 9
1≤�≤�,0≤�≤1091≤i≤n,0≤x≤10 9
2≤�≤�≤�2≤l≤r≤n
خروجیبه ازای هر پرسمان از نوع دوم در یک سطر خروجی مربوطه را چاپ کنید.
سیرسیر نماد قناعت، مناعت طبع است.حاجی فیروز که همیشه دنبال پیشرفت است، مقدار پیشرفتش در برداشت سیر در ساعت �iام (1<�1<i) را برابر مقدار زیر قرار میدهد.���(0,��−���1≤�<���)max(0,a i −max 1≤j<i a j )
که ناگهان �q سوال بسیار مهم به ذهن حاجی فیروز رسید. سوالهای حاجی فیروز دو نوع بودند.
نوع اول: «چی میشد اگر تو ساعت کاری �i عوض انقدری که سیر برداشت کردم �x سیر برداشت میکردم؟»نوع دوم: «الان مجموع پیشرفت من از ساعت �l تا ساعت �r چقدر است؟» (دقت کنید که پیشرفت در ساعتهای �lام و �rام هم حساب هستند.)حواستان باشد که وقتی حاجی فیروز سؤالی از نوع دوم از خودش میپرسد تمام تغییراتی که سوالهای نوع اول که قبل از این سوال به ذهن او خطور کرده است در ذهن او اعمال شدهاند.
به حاجی فیروز کمک کنید تا به پاسخ سؤالهایش برسد.
ورودیدر سطر اول دو عدد صحیح �n و �q بهترتیب میآیند.در سطر دوم �n عدد صحیح �1,�2,�3,⋯,��a 1 ,a 2 ,a 3 ,⋯,a n بهترتیب میآیند.در هر یک از �q سطر بعدی سوالهای حاجی فیروز میآیند که هر کدام به یکی از دو شکل زیر است:
نوع اول: سه عدد 11 و �i و �x بهترتیب میآیند.نوع دوم: سه عدد 22 و �l و �r بهترتیب میآیند.1≤�,�≤2×1051≤n,q≤2×10 5
0≤��≤1090≤a i ≤10 9
1≤�≤�,0≤�≤1091≤i≤n,0≤x≤10 9
2≤�≤�≤�2≤l≤r≤n
خروجیبه ازای هر پرسمان از نوع دوم در یک سطر خروجی مربوطه را چاپ کنید.
۱۷:۲۴
class SegmentTree: def _init__(self, n):
self.n = n
self.tree = [0] (4 n)
def update(self, idx, value, node=1, start=1, end=None):
if end is None:
end = self.n
if start == end:
self.tree[node] = value
else:
mid = (start + end) // 2
if start <= idx <= mid:
self.update(idx, value, 2 node, start, mid)
else:
self.update(idx, value, 2 node + 1, mid + 1, end)
self.tree[node] = self.tree[2 node] + self.tree[2 node + 1]
def query(self, l, r, node=1, start=1, end=None):
if end is None:
end = self.n
if r < start or l > end:
return 0
if l <= start and end <= r:
return self.tree[node]
mid = (start + end) // 2
left_query = self.query(l, r, 2 node, start, mid)
right_query = self.query(l, r, 2 node + 1, mid + 1, end)
return left_query + right_query
def process_queries(n, q, a, queries):
progress = [0] * n
seg_tree = SegmentTree(n)
max_a = -1
for i in range(n):
progress[i] = max(0, a[i] - max_a)
max_a = max(max_a, a[i])
seg_tree.update(i + 1, progress[i])
result = []
for query in queries:
if query[0] == 1:
i, x = query[1] - 1, query[2]
a[i] = x
max_a = max(a[:i]) if i > 0 else -1
new_progress = max(0, a[i] - max_a)
progress[i] = new_progress
seg_tree.update(i + 1, new_progress)
elif query[0] == 2:
l, r = query[1], query[2]
res = seg_tree.query(l, r)
result.append(res)
return result
# Input and output handling
n, q = map(int, input().split())
a = list(map(int, input().split()))
queries = [list(map(int, input().split())) for in range(q)]
result = process_queries(n, q, a, queries)for res in result: print(res)
self.n = n
self.tree = [0] (4 n)
def update(self, idx, value, node=1, start=1, end=None):
if end is None:
end = self.n
if start == end:
self.tree[node] = value
else:
mid = (start + end) // 2
if start <= idx <= mid:
self.update(idx, value, 2 node, start, mid)
else:
self.update(idx, value, 2 node + 1, mid + 1, end)
self.tree[node] = self.tree[2 node] + self.tree[2 node + 1]
def query(self, l, r, node=1, start=1, end=None):
if end is None:
end = self.n
if r < start or l > end:
return 0
if l <= start and end <= r:
return self.tree[node]
mid = (start + end) // 2
left_query = self.query(l, r, 2 node, start, mid)
right_query = self.query(l, r, 2 node + 1, mid + 1, end)
return left_query + right_query
def process_queries(n, q, a, queries):
progress = [0] * n
seg_tree = SegmentTree(n)
max_a = -1
for i in range(n):
progress[i] = max(0, a[i] - max_a)
max_a = max(max_a, a[i])
seg_tree.update(i + 1, progress[i])
result = []
for query in queries:
if query[0] == 1:
i, x = query[1] - 1, query[2]
a[i] = x
max_a = max(a[:i]) if i > 0 else -1
new_progress = max(0, a[i] - max_a)
progress[i] = new_progress
seg_tree.update(i + 1, new_progress)
elif query[0] == 2:
l, r = query[1], query[2]
res = seg_tree.query(l, r)
result.append(res)
return result
# Input and output handling
n, q = map(int, input().split())
a = list(map(int, input().split()))
queries = [list(map(int, input().split())) for in range(q)]
result = process_queries(n, q, a, queries)for res in result: print(res)
۱۷:۲۶
### جزوه: ابزارهای هک و تست نفوذ در کالی لینوکس
---
### 1. Nmap (Network Mapper)
Nmap یک ابزار بسیار مهم برای اسکن شبکهها و شناسایی پورتها، سرویسها و سیستمهای آسیبپذیر است.
#### سینتکس:
#### مثالها:- اسکن یک آیپی:
#### توضیحات:- `-p`: برای تعیین پورتهای خاص.- `-p-`: برای اسکن تمام پورتها.- `-A`: برای شناسایی سیستم عامل و نسخه سرویسها.
---
### 2. Metasploit Framework
Metasploit یکی از ابزارهای پیشرفته برای تست نفوذ و شبیهسازی حملات با استفاده از ماژولهای مختلف بهرهبرداری است.
#### سینتکس:
#### مثالها:- شروع کنسول Metasploit:
#### توضیحات:- `use`: برای انتخاب ماژول بهرهبرداری.- `set RHOST`: تنظیم آیپی هدف.- `run`: اجرای ماژول بهرهبرداری.
---
### 3. Hydra
Hydra یک ابزار brute-force است که برای شکستن پسورد سرویسهای مختلف استفاده میشود.
#### سینتکس:
#### مثالها:- حمله به SSH:
#### توضیحات:- `-l`: نام کاربری هدف.- `-P`: فایل لیست پسورد.- `ssh://`: پروتکل SSH.- `ftp://`: پروتکل FTP.
---
### 4. Burp Suite
Burp Suite مجموعهای از ابزارها برای تست امنیت وبسایتها است. این ابزار برای شناسایی آسیبپذیریها و تهدیدات امنیتی در برنامههای وب استفاده میشود.
#### سینتکس:
#### توضیحات:- برای استفاده از Burp Suite باید از رابط گرافیکی آن استفاده کرد.- Burp Suite ابزارهایی مانند Proxy، Scanner، Intruder و Spider برای تحلیل وبسایتها ارائه میدهد.
---
### 5. Wireshark
Wireshark ابزاری برای تحلیل ترافیک شبکه است که به شما امکان ضبط، مشاهده و تجزیه و تحلیل بستههای شبکه را میدهد.
#### سینتکس:
#### توضیحات:- Wireshark بیشتر به صورت گرافیکی استفاده میشود.- از آن برای شناسایی اطلاعات حساس مانند رمز عبور و دادههای شخصی در ترافیک شبکه میتوان استفاده کرد.
---
### 6. Aircrack-ng
Aircrack-ng ابزار مناسبی برای تست امنیت شبکههای وایرلس است و به کمک آن میتوان رمزهای وایفای را شکاند.
#### سینتکس:
#### مثالها:- فعالسازی حالت مانیتور:
#### توضیحات:- `airodump-ng`: جمعآوری پکتها از شبکههای وایرلس.- `aircrack-ng`: شکستن رمز عبور وایفای با استفاده از لیست پسورد.
---
### 7. John the Ripper
John the Ripper یک ابزار شکستن رمز عبور است که برای انجام حملات brute-force و cryptanalytic استفاده میشود.
#### سینتکس:
#### مثالها:- شکستن رمز عبور از یک فایل رمز:
#### توضیحات:- `--wordlist`: مسیر فایل لیست کلمات برای حملات.
---
### 8. Nikto
Nikto ابزاری برای شناسایی آسیبپذیریها و تهدیدات امنیتی در وبسایتها است.
#### سینتکس:
#### مثالها:- اسکن یک وبسایت:
#### توضیحات:- `-h`: هدف اسکن (آیپی یا دامنه).- `-p`: پورت خاص برای اسکن.
---
### 9. Sqlmap
Sqlmap ابزاری برای شناسایی و بهرهبرداری از آسیبپذیریهای SQL Injection در وبسایتها است.
#### سینتکس:
#### مثالها:- بررسی آسیبپذیری SQL Injection: ``` sqlmap -u "http://192.1
---
### 1. Nmap (Network Mapper)
Nmap یک ابزار بسیار مهم برای اسکن شبکهها و شناسایی پورتها، سرویسها و سیستمهای آسیبپذیر است.
#### سینتکس:
nmap [options] [target]
#### مثالها:- اسکن یک آیپی:
nmap 192.168.1.1
- اسکن چندین پورت خاص:
nmap -p 22,80,443 192.168.1.1
- اسکن تمام پورتها:
nmap -p- 192.168.1.1
- اسکن همراه با شناسایی سیستم عامل:
nmap -A 192.168.1.1
#### توضیحات:- `-p`: برای تعیین پورتهای خاص.- `-p-`: برای اسکن تمام پورتها.- `-A`: برای شناسایی سیستم عامل و نسخه سرویسها.
---
### 2. Metasploit Framework
Metasploit یکی از ابزارهای پیشرفته برای تست نفوذ و شبیهسازی حملات با استفاده از ماژولهای مختلف بهرهبرداری است.
#### سینتکس:
msfconsole
#### مثالها:- شروع کنسول Metasploit:
msfconsole
- انتخاب یک ماژول بهرهبرداری:
use exploit/windows/smb/ms08_067_netapi
- تنظیم هدف (RHOST):
set RHOST 192.168.1.5
- اجرای حمله:
run
#### توضیحات:- `use`: برای انتخاب ماژول بهرهبرداری.- `set RHOST`: تنظیم آیپی هدف.- `run`: اجرای ماژول بهرهبرداری.
---
### 3. Hydra
Hydra یک ابزار brute-force است که برای شکستن پسورد سرویسهای مختلف استفاده میشود.
#### سینتکس:
hydra -l [username] -P [password list] [target] [service]
#### مثالها:- حمله به SSH:
hydra -l root -P /path/to/passwords.txt ssh://192.168.1.1
- حمله به FTP:
hydra -l admin -P /path/to/passwords.txt ftp://192.168.1.1
#### توضیحات:- `-l`: نام کاربری هدف.- `-P`: فایل لیست پسورد.- `ssh://`: پروتکل SSH.- `ftp://`: پروتکل FTP.
---
### 4. Burp Suite
Burp Suite مجموعهای از ابزارها برای تست امنیت وبسایتها است. این ابزار برای شناسایی آسیبپذیریها و تهدیدات امنیتی در برنامههای وب استفاده میشود.
#### سینتکس:
burpsuite
#### توضیحات:- برای استفاده از Burp Suite باید از رابط گرافیکی آن استفاده کرد.- Burp Suite ابزارهایی مانند Proxy، Scanner، Intruder و Spider برای تحلیل وبسایتها ارائه میدهد.
---
### 5. Wireshark
Wireshark ابزاری برای تحلیل ترافیک شبکه است که به شما امکان ضبط، مشاهده و تجزیه و تحلیل بستههای شبکه را میدهد.
#### سینتکس:
wireshark
#### توضیحات:- Wireshark بیشتر به صورت گرافیکی استفاده میشود.- از آن برای شناسایی اطلاعات حساس مانند رمز عبور و دادههای شخصی در ترافیک شبکه میتوان استفاده کرد.
---
### 6. Aircrack-ng
Aircrack-ng ابزار مناسبی برای تست امنیت شبکههای وایرلس است و به کمک آن میتوان رمزهای وایفای را شکاند.
#### سینتکس:
airmon-ng start [interface]
airodump-ng [interface]
aircrack-ng [capture file]
#### مثالها:- فعالسازی حالت مانیتور:
airmon-ng start wlan0
- اسکن شبکههای وایرلس:
airodump-ng wlan0mon
- شکستن رمز وایفای:
aircrack-ng -w /path/to/wordlist.txt capturefile.cap
#### توضیحات:- `airodump-ng`: جمعآوری پکتها از شبکههای وایرلس.- `aircrack-ng`: شکستن رمز عبور وایفای با استفاده از لیست پسورد.
---
### 7. John the Ripper
John the Ripper یک ابزار شکستن رمز عبور است که برای انجام حملات brute-force و cryptanalytic استفاده میشود.
#### سینتکس:
john [options] [password file]
#### مثالها:- شکستن رمز عبور از یک فایل رمز:
john /path/to/passwords.txt
- استفاده از فایل لیست کلمات:
john --wordlist=/path/to/wordlist.txt /path/to/passwords.txt
#### توضیحات:- `--wordlist`: مسیر فایل لیست کلمات برای حملات.
---
### 8. Nikto
Nikto ابزاری برای شناسایی آسیبپذیریها و تهدیدات امنیتی در وبسایتها است.
#### سینتکس:
nikto -h [target]
#### مثالها:- اسکن یک وبسایت:
nikto -h http://192.168.1.1
- اسکن یک پورت خاص:
nikto -h http://192.168.1.1 -p 8080
#### توضیحات:- `-h`: هدف اسکن (آیپی یا دامنه).- `-p`: پورت خاص برای اسکن.
---
### 9. Sqlmap
Sqlmap ابزاری برای شناسایی و بهرهبرداری از آسیبپذیریهای SQL Injection در وبسایتها است.
#### سینتکس:
sqlmap -u [URL] --risk=[level] --level=[level]
#### مثالها:- بررسی آسیبپذیری SQL Injection: ``` sqlmap -u "http://192.1
۱۲:۲۹
68.1.1/page.php?id=1" --risk=3 --level=5
#### توضیحات:- `-u`: تعیین URL هدف.- `-w`: تعیین فایل لیست کلمات برای جستجو.
---
### نتیجهگیری:
در این جزوه به بررسی 10 ابزار قدرتمند برای تست نفوذ و هک در کالی لینوکس پرداختیم. هر ابزار دارای سینتکس خاص خود است که میتواند در انجام حملات و شبیهسازی تستهای امنیتی بسیار موثر باشد. با یادگیری این ابزارها، شما میتوانید در آزمونها و تستهای نفوذ مهارت پیدا کنید و به تحلیل آسیبپذیریها بپردازید.
#### توضیحات:
- `-u`: URL هدف.
- `--risk`: سطح ریسک تست.
- `--level`: سطح عمق تست.
---
### 10. **Gobuster**
**Gobuster** ابزاری برای شناسایی دایرکتوریها و فایلهای مخفی در وبسایتها است.
#### سینتکس:
gobuster dir -u [URL] -w [wordlist]
#### مثالها:
- جستجو برای دایرکتوریها:
gobuster dir -u http://192.168.1.1 -w /path/to/wordlist.txt ```#### توضیحات:- `-u`: تعیین URL هدف.- `-w`: تعیین فایل لیست کلمات برای جستجو.
---
### نتیجهگیری:
در این جزوه به بررسی 10 ابزار قدرتمند برای تست نفوذ و هک در کالی لینوکس پرداختیم. هر ابزار دارای سینتکس خاص خود است که میتواند در انجام حملات و شبیهسازی تستهای امنیتی بسیار موثر باشد. با یادگیری این ابزارها، شما میتوانید در آزمونها و تستهای نفوذ مهارت پیدا کنید و به تحلیل آسیبپذیریها بپردازید.
۱۲:۲۹
بازارسال شده از بازوی بازی جنگ جهانی
۸:۱۶