ধরুন আমাদের একটি ডিজিট আছে, এখন যদি আমরা সেই ডিজিটটিকে 180 ডিগ্রি ঘুরিয়ে নতুন ডিজিট তৈরি করি। 0, 1, 6, 8, 9 কে 180 ডিগ্রি ঘোরানো হলে তারা যথাক্রমে 0, 1, 9, 8, 6 হয়। কিন্তু যখন 2, 3, 4, 5 এবং 7 কে 180 ডিগ্রি ঘোরানো হয়, তখন তারা অবৈধ হয়ে যায়।
একটি বিভ্রান্তিকর সংখ্যা এমন একটি সংখ্যা যা 180 ডিগ্রি ঘোরালে একটি নতুন সংখ্যা হয়ে যায়। সুতরাং, যদি আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N থাকে, তাহলে আমাদের 1 এবং N এর মধ্যে বিভ্রান্তিকর সংখ্যার সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট 20 এর মত হয়, তাহলে আউটপুট হবে 6
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি মানচিত্র ম্যাপিং সংজ্ঞায়িত করুন
-
একটি অ্যারে বৈধ সংজ্ঞায়িত করুন
-
একটি ফাংশন সল্ভ() সংজ্ঞায়িত করুন, এটি num, rotate, digit, N,
নেবে -
যদি ঘোরানো সংখ্যার সমান না হয়, তাহলে −
-
(রেট 1 দ্বারা বৃদ্ধি করুন)
-
-
আরম্ভ করার জন্য i :=0, যখন i <বৈধের আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −
-
dig :=বৈধ[i]
-
যদি num * 10 + dig> N হয়, তাহলে
-
লুপ থেকে বেরিয়ে আসুন
-
-
সমাধান (সংখ্যা * 10 + ডিগ, একটি মানচিত্র সংজ্ঞায়িত করুন, অঙ্ক * 10, N)
-
-
প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
-
ret :=0
-
বৈধ :={ 0, 1, 6, 8, 9 }
-
ম্যাপিং[0] :=0
-
ম্যাপিং[1] :=1
-
ম্যাপিং[6] :=9
-
ম্যাপিং[9] :=6
-
ম্যাপিং[8] :=8
-
সমাধান (1, 1, 10, N)
-
সমাধান (6, 9, 10, N)
-
সমাধান (9, 6, 10, N)
-
সমাধান (8, 8, 10, N)
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; typedef long long int lli; class Solution { public: int ret; map <int, int> mapping; vector <int> valid; void solve(lli num, lli rotate, lli digit, lli N){ if (rotate != num) { ret++; } for (int i = 0; i < valid.size(); i++) { int dig = valid[i]; if (num * 10 + dig > N) { break; } solve(num * 10 + dig, mapping[dig] * digit + rotate, digit * 10, N); } } int confusingNumberII(int N) { ret = 0; valid = { 0, 1, 6, 8, 9 }; mapping[0] = 0; mapping[1] = 1; mapping[6] = 9; mapping[9] = 6; mapping[8] = 8; solve(1, 1, 10, N); solve(6, 9, 10, N); solve(9, 6, 10, N); solve(8, 8, 10, N); return ret; } }; main(){ Solution ob; cout << (ob.confusingNumberII(20)); }
ইনপুট
20
আউটপুট
6