Հեշավորում

Երբ աշխատում ենք տարրերի հավաքածուների հետ (օրինակ՝ տողերի list կամ tuple-ների list), որոշակի տարր գտնելը կամ հարցի պատասխանելն այն մասին, թե «X տարրը առկա՞ է մեր հավաքածուում», հաշվարկային ծանր է դառնում: Մինչդեռ թվերը իրար համեմատելը շատ արագ է, ավելին, համակարգիչները չափազանց արդյունավետ են հենց թվերի համեմատման հարցում (ի տարբերություն տողերի կամ tuple-ների): Ուստի, եթե կարողանանք մեր ունեցած տվյալները somehow կերպ փոխակերպել որևէ թիվ ներկայացնող արժեքի, ապա որոշ գործողություններ, օրինակ՝ որոշել տվյալի առկայությունը, շատ ավելի արագ կաշխատեն:
Տվյալների կամայական չափսից անցնել ֆիքսված չափսի տվյալների (օրինակ՝ թվի) chamado հեշավորում (հեշի համարում): Ստացվող թիվը (հեշը) ծառայում է որպես սկզբնական տվյալների յուրահատուկ նույնացուցիչ։ Սովորաբար մեզ տրվում է hash ֆունկցիա, որը կարող է սկզբնական տվյալները վերածել ֆիքսված չափսի (օրինակ՝ ամբողջ թվի):
Օրինակ, Python-ում գոյություն ունի ներկառուցված hash ֆունկցիա, որը ցանկացած անփոփոխ օբյեկտ կարող է վերածել թվի, որն անձայնորեն ընկած է սահմաններում ։ Ուշադրություն դարձրեք, որ այն կարող է հեշավորել միայն անփոփոխ օբյեկտները। Հետևաբար, եթե փորձեք list կամ dictionary (որոնք փոփոխելի են և կարող են փոխվել, օրինակ՝ տարրեր ավելացնելիս կամ հեռացնելիս) հեշավորել, սխալ կստանաք.
print(hash(123))               # 123
print(hash('Anna'))            # 2573300035916889866
print(hash('Bob'))             # -2781086332262035333
print(hash((2, 'Simon')))      # -6551767300073204554
print(hash([1, 2]))            # TypeError: unhashable type: 'list'

Առաջադրանք: Hash a pair of integers

Եկեք իրականացնենք մեր սեփական h հեշ-ֆունկցիան։ Այն ստանում է երկու ամբողջ թիվ և պետք է վերադարձնի դրանց հեշ-արժեքը։ h ֆունկցիան սահմանված է այսպես.
Այդ կերպ ապահովում ենք, որ ստացված հեշը միշտ ընկած լինի [0; 5077) միջակայքում:

Մուտք

Մուտքի միակ տողում տրված են երկու সংখ্যা a և b ($0 \le a, b \le 10^9$):

Ելք

Ծրագիրը պետք է տպի զույգի (a, b) հեշը:

Օրինակներ

Մուտք
Ելք
4 5
2916
23452 5432
3751
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue