অন্য দিন আমার রসায়ন শিক্ষক আমাদেরকে বৈজ্ঞানিক স্বরলিপি সম্পর্কে ব্যাখ্যা করছিলেন (একটি সংখ্যক সংখ্যা ব্যবহার করে এবং এটি আরও দশকে আরও সহজেই প্রকাশ করার জন্য দশ গুণ দ্বারা গুণিত করছিলেন ), যা প্রথম যখন আমি এটি শিখেছিলাম তখন কয়েক বছর পূর্বে আমাকে নিয়ে এসেছিল। বুনিয়াদি শিখার পরে, আমরা কয়েকটি গণিতের সাধারণ প্রশ্নগুলি করেছি, যার মধ্যে কয়েকটি নীচের মত ছিল:
বৈজ্ঞানিক স্বরলিপিতে নিম্নলিখিতগুলি উপস্থাপন করুন:
ক) 50000000
খ) 12000000000000000
গ) 90000000000000000000000000000000000000000
ডি) পাই ^ ই ^ আই ^ জে ^ কে ^ স্টেড :: ভেক্টর
...
জেড) 200
...
এবং আমি ভেবেছিলাম, "কি? আমাদের বলা হয়েছিল যে বৈজ্ঞানিক স্বরলিপিটি প্রচুর পরিমাণে লেখাকে আরও দক্ষ করার জন্য ব্যবহৃত হয়েছিল, তবে কিছু কিছু ক্ষেত্রে তার চেয়ে বেশি দক্ষ হয় না!"
সংখ্যাটি বিবেচনা করুন
300
এবং বৈজ্ঞানিক স্বরলিপিতে এর প্রতিনিধিত্ব:
3x10^2
কী, বৈজ্ঞানিকভাবে চিহ্নিত সংস্করণটি আসলে আরও বেশি জায়গা নেয়? আমরা কি এখন তা পারি না? (স্ক্রিন স্পেসটি মূল্যবান))
আমরা নিজেরাই নির্ধারণ করতে পারি যে বৈজ্ঞানিক স্বরলিপিতে একটি সংখ্যা লেখার জন্য আরও স্থান দক্ষ কিনা বা ...
কার্য
আপনার প্রোগ্রাম বা ফাংশনটি ইনপুট হিসাবে একক ধনাত্মক n
আকারের সালাদাগুলি আকার নিতে পারে (আপনার ভাষা যা সমর্থন করে তা অবধি) এবং সংখ্যার বৈজ্ঞানিকভাবে চিহ্নিত সংস্করণটিকে আউটপুট দেয়।
যাইহোক, যদি মূল সংখ্যা n
, পিছনের শূন্যগুলি এবং পেছনের দশমিক স্থানটি অপসারণের পরে, এর বৈজ্ঞানিকভাবে স্বীকৃত সংস্করণটির তুলনায় কম পরিমাণে বা সমান পরিমাণ অক্ষর প্রদর্শন করতে হয় তবে তার n
পরিবর্তে আপনাকে অবশ্যই মূল সংখ্যাটি আউটপুট করতে হবে ।
আপনার কোডটি যত তাড়াতাড়ি সংক্ষিপ্ত হওয়া দরকার কারণ আউটপুটটিও যতটা সম্ভব ছোট হতে হবে।
বিশেষ উল্লেখ
দক্ষ বৈজ্ঞানিক স্বরলিপি নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়েছে:
bx10^e
b
ইনপুট সংখ্যাটি হ'ল 10 এর মতো শক্তির দ্বারা যথাযথভাবে বিভক্ত হয় 1 <= b < 10
। এই সংখ্যাটিতে অবশ্যই সমস্ত চলমান শূন্যগুলি (এবং প্রয়োজনে দশমিক পয়েন্ট) মুছে ফেলা উচিত, তবে অবশ্যই মূল সংখ্যার যথার্থতা থাকতে হবে (অবশ্যই আপনার ভাষার দশমিক পয়েন্ট সীমা পর্যন্ত)। অর্থাত 90000
হয়ে 9
, 13.500
হয়ে 1.35
, 0.000675
হয়ে 6.75
ইত্যাদি এই নম্বরে প্রান্ত আরো দশমিক স্থান চেয়ে আপনার ভাষা সব ব্যবস্থা করতে সক্ষম ধারণকারী আপ, এটা দশমিক স্থান যে সর্বাধিক সংখ্যাতে বৃত্তাকার করা উচিত করে।
e
দশটি কীভাবে উত্থাপিত হয় তা n = b x 10^e
(মনে রাখবেন যে n
1 এর চেয়ে কম হলে এই সংখ্যাটি নেতিবাচক হওয়া দরকার )। এই সংখ্যার কোনও পিছনে জিরো বা দশমিক স্থান থাকা উচিত নয় (মূলত এটি যদি পূর্ণসংখ্যা না হয় তবে কিছু ভুল হয় ...)।
অক্ষর x10^
আবশ্যক যেমন মধ্যে স্ট্রিং হয় থাকা b
এবং e
।
পরীক্ষার মামলা
Input -> output
1 -> 1
20 -> 20
3000000 -> 3x10^6
400000 -> 400000
0.008093 -> 0.008093
0.007835000000000 -> 0.007835
0.000003000000 -> 3x10^-6
0.00000065 -> 6.5x10^-7
0 -> 0
স্কোরিং
এটি কোড-গল্ফ , তাই বাইট জেতে সংক্ষিপ্ততম কোড।
অন্যান্য নিয়ম এবং স্পষ্টতা
- ট্রেলিং শূন্যগুলি (এবং / অথবা দশমিক স্থানের পিছনে পিছনে) মূল ইনপুট সংখ্যার অক্ষর গণনার দিকে গণনা করা হয় না
n
। পরীক্ষার কেস 6 এর মতো ক্ষেত্রে এটি মনে রাখবেন - আপনি ধরে নিতে পারেন যে যদি ইনপুট সংখ্যাটি 1 এর চেয়ে কম হয় তবে এটি সর্বদা 0 এর সাথে এক সংখ্যার (টেস্টের ক্ষেত্রে 5-8 হিসাবে) শুরু হবে।
- ইনপুট নম্বর কখনই নেতিবাচক হবে না
- বিল্ট-ইনগুলি যা এই চ্যালেঞ্জকে তুচ্ছ ও মানক লফোলগুলি করে তা মঞ্জুরিপ্রাপ্ত নয়
- আউটপুটে একটি পিছনের নতুন লাইন ঠিক আছে
সম্পাদনা
88655 ব্যবহারকারীর কাছে পরীক্ষার কেসটি 7 এবং 8 এর দশকে ভুল প্রমাণ করার জন্য ধন্যবাদ। আমি এখন সেগুলি স্থির করে রেখেছি তাই নিশ্চিত হয়ে নিন যে আপনার কোডগুলি তাদের সঠিকভাবে মূল্যায়ন করে।
e
: 9000 -> 9e3
(প্রায় 9,000 এরও বেশি !)
x10^
। এবং এটি প্রশ্নটিতে পুনর্নির্মাণের ন্যায্য বিষয় হবে যা আমি মনে করি না যে এটি পোস্ট করা এখনই উপযুক্ত
pi^e^i^j^k^std::vector
হবে জিজ্ঞাসা করা উচিত ?