কম্পিউটার

প্রতিযোগিতামূলক প্রোগ্রামিংয়ের জন্য পাইথন ইনপুট পদ্ধতি?


এতে আমরা পাইথনে প্রতিযোগিতামূলক প্রোগ্রামিংয়ের জন্য I/O পদ্ধতির বিভিন্ন উপায় দেখতে যাচ্ছি। প্রতিযোগিতামূলক প্রোগ্রামিং-এ ইনপুট যত তাড়াতাড়ি সম্ভব পড়া গুরুত্বপূর্ণ যাতে অন্যদের থেকে সুবিধা নেওয়া যায়।

ধরুন আপনি একটি কোডফোর্স বা অনুরূপ অনলাইন জুডে আছেন (যেমন এসপিওজে) এবং আপনাকে সংখ্যাগুলি a, b, c, d পড়তে হবে এবং তাদের পণ্যটি প্রিন্ট করতে হবে। করার একাধিক উপায় আছে, আসুন সেগুলি অন্বেষণ করি – এক এক করে

এটি করার একটি উপায় হল তালিকা বোঝা এবং মানচিত্র ফাংশন।

পদ্ধতি 1 :একটি তালিকা বোঝার ব্যবহার

a, b, c, d = [int(x) for x in input().split()]
print(a*b*c*d)

পদ্ধতি 2 :মানচিত্র ফাংশন ব্যবহার করে

a, b, c, d = map(int, input().split())
print(a*b*c*d)

উপরের সমস্যাটি করার আরেকটি উপায় হল stdin এবং stdout ব্যবহার করা যা অনেক দ্রুত।

পদ্ধতি 1 a :stdin এবং stdout

সহ তালিকা বোঝা
from sys import stdin, stdout
a, b, c, d = [int(x) for x in stdin.readline().rstrip().split()]
stdout.write(str(a*b*c*d) + "\n")

আসুন প্রতিযোগিতামূলক প্রোগ্রামিং থেকে আরেকটি সমস্যা দেখি যেখানে আমরা সমস্যাগুলির উপর আমাদের ইনপুট এবং আউটপুট পদ্ধতিগুলি পরীক্ষা করতে পারি। সমস্যাটিকে SPOJ-এ INTEST-Enormous Input Test বলা হয়৷

ইনপুট

ইনপুট দুটি ধনাত্মক পূর্ণসংখ্যা n k (n, k<=10 7 দিয়ে শুরু হয় ) ইনপুটের পরবর্তী n লাইনে একটি ধনাত্মক পূর্ণসংখ্যা ti থাকে, 10 9 এর বেশি নয় , প্রতিটি।

আউটপুট

আউটপুট করার জন্য একটি একক পূর্ণসংখ্যা লিখুন, কতটি পূর্ণসংখ্যা ti কে দ্বারা বিভাজ্য তা বোঝান।

কোথায়

  • ইনপুট :ইনপুট দুটি ধনাত্মক পূর্ণসংখ্যা n এবং k দিয়ে শুরু হয় (যেখানে- n, k <=10)। ইনপুটের পরবর্তী লাইনগুলিতে একটি ধনাত্মক পূর্ণসংখ্যা রয়েছে যা প্রতিটি 10*9 এর বেশি নয়৷

  • আউটপুট :একটি একক পূর্ণসংখ্যা নির্দেশ করে যে কতটি পূর্ণসংখ্যা t k দ্বারা বিভাজ্য।

যেমন

Input
7 3
1
51
966369
7
9
999996
11
Output
4

পদ্ধতি 1

উপরের সমস্যা সমাধানের একটি উপায় নীচে দেওয়া হল যদিও কার্যকরী নয়

def main():
   n, k = [int(c) for c in input().split()]
   cnt = 0
   for _ in range(n):
      t = int(input())
      if t % k == 0:
         cnt += 1
   print(cnt)

if __name__ == "__main__":
   main()

পদ্ধতি 2

উপরের সমস্যা সমাধানের আরেকটি কার্যকর উপায় হল stdin এবং stdout ব্যবহার করা। নীচের প্রোগ্রামটি আগেরটির তুলনায় অনেক দ্রুত চলে৷

from sys import stdin, stdout

def main():
   n, k = [int(c) for c in input().split()]
   cnt = 0
   for _ in range(n):
      t = int(stdin.readline())
      if t % k == 0:
         cnt += 1
   stdout.write(str(cnt))

if __name__ == "__main__":
   main()

পদ্ধতি 3

উপরের সমস্যাটি সমাধান করার আরেকটি উপায় যা উপরে উল্লিখিত আগের দুটির চেয়ে অনেক দ্রুত stdin এবং stdout ব্যবহার করে (যা আমরা পদ্ধতি 2-এ ব্যবহার করেছি তার মতোই) তবে, একবারে পুরো ইনপুটটি পড়ুন এবং এটি একটি তালিকায় লোড করুন। পি>

def main():
   for sys import stdin, stdout
   n, k = stdin.readline().split()
   n = int(n)
   k = int(k)

   cnt = 0
   lines = stdin.readlines()
   for line in lines:
      if int(line) % k == 0:
         cnt += 1
   stdout.write(str(cnt))

if __name__ == "__main__":
   main()

  1. QuickSort-এর জন্য পাইথন প্রোগ্রাম

  2. উইন্ডোজে পাইথন প্রোগ্রামিংয়ের জন্য IDE

  3. কেন পাইথন প্রতিযোগিতামূলক কোডিংয়ের জন্য সবচেয়ে উপযুক্ত

  4. পাইথনে কচ্ছপ প্রোগ্রামিং