আমি কীভাবে একটি শক্তিতে একটি সংখ্যা বাড়াতে পারি?
2^1
2^2
2^3
ইত্যাদি ...
আমি কীভাবে একটি শক্তিতে একটি সংখ্যা বাড়াতে পারি?
2^1
2^2
2^3
ইত্যাদি ...
উত্তর:
cmath গ্রন্থাগারে পাও ()। আরও তথ্য এখানে । #include<cmath>
ফাইলের শীর্ষে রাখতে ভুলবেন না ।
std::pow
মধ্যে <cmath>
হেডার এই overloads আছে:
pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);
এখন আপনি ঠিক করতে পারবেন না
pow(2, N)
এন, কোন int হচ্ছে কারণ এটি যার জানে না সঙ্গে float
, double
অথবা long double
সংস্করণ তা গ্রহণ করা উচিত, এবং আপনি একটি দ্ব্যর্থতা ত্রুটি পেতে হবে। তিনটিরই ইন্টি থেকে ফ্লোটিং পয়েন্টে রূপান্তর প্রয়োজন, এবং তিনটিই সমান ব্যয়বহুল!
সুতরাং, প্রথম যুক্তিটি টাইপ করেছেন তা নিশ্চিত হন যাতে এটি তিনটির মধ্যে একটির সাথে পুরোপুরি মেলে। আমি সাধারণত ব্যবহার করিdouble
pow(2.0, N)
কিছু উকিল আবার আমার কাছ থেকে বোকা। আমি প্রায়শই এই সমস্যার মধ্যে পড়ে যাই, তাই আমি আপনাকে এটি সম্পর্কে সতর্ক করতে যাচ্ছি।
int N; pow(2.0, N)
তবুও অস্পষ্ট হবে could be 'pow(double,int)' or 'pow(double,double)'
:: - / → কাস্ট
std::pow(2.0, 3)
।
pow(2, N)
সি ++ 11 সাল থেকে এটিও দ্ব্যর্থহীন বলে মনে করি কারণ প্যারামিটার হিসাবে কোনও গাণিতিক প্রকার প্রাপ্ত একটি টেম্পলেট রয়েছে।
সি ++ এ "^" অপারেটরটি কিছুটা দিকের OR হয়। এটি একটি শক্তি উত্থাপন জন্য কাজ করে না। X << n হ'ল বাইনারি সংখ্যার একটি বাম শিফট যা 2 এন দ্বারা বহুগুণ x এর সমান এবং এটি কেবল 2 পাওয়ার বাড়ানোর সময় ব্যবহার করা যেতে পারে। POW ফাংশনটি একটি গণিতের ফাংশন যা উদারভাবে কাজ করবে।
1 << n
2 পাওয়ার পাওয়ার, বা বাড়ানোর সমান 2^n
।
1 << n
@ আশিষ আউজা মন্তব্যে যারা "1" কেন পায় নি তাদের পক্ষে , কারণ সিরিজটি এর আগে 1 << 0 = 1
থেকে এভাবে চলেছে 2^0 = 1
; 1 << 1 = 2
যেহেতু 2^1 = 2
; 1 << 2 = 4
যেহেতু 2^2 = 4
এবং আরও ...
পা (x, y) ফাংশনটি ব্যবহার করুন: এখানে দেখুন
কেবল গণিতের অন্তর্ভুক্ত করুন এবং আপনি সম্পূর্ণ প্রস্তুত।
যদিও pow( base, exp )
দুর্দান্ত পরামর্শ, সচেতন হন যে এটি সাধারণত ভাসমান-পয়েন্টে কাজ করে।
এটি আপনি যা চান তা হতে পারে বা নাও হতে পারে: কিছু সিস্টেমে একটি সরল লুপটি একটি সঞ্চয়ের উপর গুণমান পূর্ণসংখ্যার ধরণের জন্য দ্রুত হবে।
এবং বিশেষত বর্গক্ষেত্রের জন্য, আপনি কেবল নিজের সাথে সংখ্যাগুলি, ভাসমান-পয়েন্ট বা পূর্ণসংখ্যাকে একসাথে গুণতে পারেন; এটি পঠনযোগ্যতার (আইএমএইচও) আসলেই হ্রাস নয় এবং আপনি কোনও ফাংশন কলের কর্মক্ষমতা ওভারহেড এড়িয়ে যান।
মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই, তবে আপনি যদি কিউটি দিয়ে কাজ করতে চান তবে তাদের নিজস্ব সংস্করণ রয়েছে।
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
অথবা আপনি কিউটি ব্যবহার করছেন না, cmath মূলত একই জিনিস আছে।
#include <cmath>
double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
pow(x, y); //Should return this: 78125
#include <iostream>
#include <conio.h>
using namespace std;
double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)
void main()
{
double x; //initializing the variable x and i
int i;
cout<<"please enter the number";
cin>>x;
cout<<"plese enter the integer power that you want this number raised to";
cin>>i;
cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}
// ফাংশন উত্থাপিত শক্তি সংজ্ঞা
double raiseToPow(double x, int power)
{
double result;
int i;
result =1.0;
for (i=1, i<=power;i++)
{
result = result*x;
}
return(result);
}
আপনি যদি বেস 2 দিয়েই ডিল করতে চান তবে আমি গণিত লাইব্রেরির পরিবর্তে বাম শিফট অপারেটর << ব্যবহার করার পরামর্শ দিচ্ছি ।
কোডের উদাহরণ :
int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}
নমুনা আউটপুট:
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
অনেক উত্তর প্রস্তাবিত pow()
বা অনুরূপ বিকল্প বা তাদের নিজস্ব বাস্তবায়ন করেছে। যাইহোক, উদাহরণ (প্রদত্ত 2^1
, 2^2
এবং 2^3
আপনার প্রশ্নের মধ্যে), আমি অনুমান কিনা আপনি শুধুমাত্র বাড়াতে প্রয়োজন 2
একটি পূর্ণসংখ্যা ক্ষমতায়। এই যদি হয় তাহলে, আমি তোমাকে ব্যবহার করতে সুপারিশ করবে 1 << n
জন্য 2^n
।
লক্ষ্য করুন ব্যবহারের pow(x,y)
চেয়ে কম কার্যকরী x*x*x
Y গুন বেশি দেখানো এবং উত্তর এখানে দেওয়া https://stackoverflow.com/a/2940800/319728 ।
আপনি যদি দক্ষতা ব্যবহারের জন্য যান x*x*x
।
আমি গ্রন্থাগারটি ব্যবহার করছি cmath
বা ক্ষমতার যত্ন নেওয়ার জন্য গ্রন্থাগারের ফাংশনগুলি math.h
ব্যবহার করার জন্য করছিpow()
#include<iostream>
#include<cmath>
int main()
{
double number,power, result;
cout<<"\nEnter the number to raise to power: ";
cin>>number;
cout<<"\nEnter the power to raise to: ";
cin>>power;
result = pow(number,power);
cout<<"\n"<< number <<"^"<< power<<" = "<< result;
return 0;
}
প্রথমে যুক্ত করুন #include <cmath>
তারপর আপনি pow
আপনার কোডে মিথোড ব্যবহার করতে পারেন উদাহরণস্বরূপ:
pow(3.5, 3);
কোনটি 3.5 হয় বেস এবং 3 হয় মেপুঃ
cmath, tgmath বা math.h লাইব্রেরিতে Pow () ফাংশন ব্যবহার করুন।
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b
return 0;
}
মনে রাখবেন যে আপনি লম্বা দ্বিগুণ ব্যতীত অন্য কোনও ডেটা টাইপ হিসাবে পাওয়ারকে ইনপুট দিলে উত্তরটি দ্বিগুণ হিসাবে প্রচারিত হবে। এটি এটি ইনপুট নেবে এবং দ্বিগুণ হিসাবে আউটপুট দেবে। দীর্ঘ ডাবল ইনপুট জন্য রিটার্ন টাইপ দীর্ঘ ডাবল। অভ্যন্তরীণ ব্যবহারের উত্তর পরিবর্তনের জন্য, সি সি = (ইনট) পাও (ক, খ)
তবে, কয়েকটি সংখ্যার জন্য মনে রাখবেন এর ফলাফলটি সঠিক উত্তরের চেয়ে কম সংখ্যক হতে পারে। সুতরাং উদাহরণস্বরূপ আপনাকে 5 ^ 2 গণনা করতে হবে, তারপরে উত্তরটি কয়েকটি সংকলকগুলিতে 24.99999999999 হিসাবে ফিরে আসতে পারে। ডাটা টাইপটি ইনট-তে পরিবর্তন করে উত্তরটি 25 এর পরিবর্তে 24 হবে answer সুতরাং, এটি করুন
int c=(int)(pow(a,b)+0.5)
এখন, আপনার উত্তরটি সঠিক হবে। এছাড়াও, খুব বড় সংখ্যার জন্য ডেটা ডাবল থেকে দীর্ঘ দীর্ঘ অন্তর্গত পরিবর্তনগুলিতে হারিয়ে যায়। উদাহরণস্বরূপ আপনি লিখুন
long long int c=(long long int)(pow(a,b)+0.5);
এবং ইনপুট একটি = 3 এবং বি = 38 দিন তবে ফলাফলটি 1350851717672992000 এ আসবে যখন সঠিক উত্তরটি হবে 1350851717672992089, এটি ঘটে কারণ পাও () ফাংশনটি 1.35085e + 18 যা 1350851717672992000 হিসাবে ইন্টিতে উন্নীত হয়। আমি একটি লেখার পরামর্শ দিই এই জাতীয় পরিস্থিতিতে যেমন কাস্টম শক্তি ফাংশন: -
long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}
return q;
}
এবং তারপরে যখনই আপনি চান এটি কল করুন,
int main()
{
long long int a,b;
cin >> a >> b;
long long int c=__pow(a,b);
cout << c << endl;
return 0;
}
দীর্ঘ দীর্ঘ অন্তরের পরিসরের চেয়ে বেশি সংখ্যার জন্য, হয় বুস্ট লাইব্রেরি বা স্ট্রিং ব্যবহার করুন।
__
সংরক্ষিত, আপনার সম্ভবত অন্য কিছু বাছাই করা উচিত।