मैं एक संख्या को एक शक्ति में कैसे बढ़ाऊं?
2^1
2^2
2^3
आदि...
मैं एक संख्या को एक शक्ति में कैसे बढ़ाऊं?
2^1
2^2
2^3
आदि...
जवाबों:
cmath पुस्तकालय में pow ()। अधिक जानकारी यहाँ । #include<cmath>
फ़ाइल के शीर्ष पर रखना न भूलें ।
std::pow
में <cmath>
शीर्ष लेख इन भार के होते हैं:
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)
एन, किसी पूर्णांक किया जा रहा है, क्योंकि यह जिनमें से पता नहीं है के साथ 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 के बाद से यह भी स्पष्ट नहीं है, क्योंकि पैरामीटर के रूप में किसी भी अंकगणितीय प्रकार को प्राप्त करने वाला एक टेम्पलेट फ़ंक्शन है।
C ++ में "^" ऑपरेटर एक बिटवाइज़ OR है। यह एक शक्ति को बढ़ाने के लिए काम नहीं करता है। X << n द्विआधारी संख्या की एक बाईं पारी है जो x को 2 n संख्या से गुणा करने के समान है और इसका उपयोग केवल 2 को एक शक्ति में बढ़ाते समय किया जा सकता है। POW फ़ंक्शन एक गणित फ़ंक्शन है जो सामान्य रूप से काम करेगा।
1 << n
रूप से, पावर एन को 2 बढ़ाने के समान है, या 2^n
।
1 << n
@AshishAhuja टिप्पणी में "1" क्यों नहीं मिला , यह इसलिए है क्योंकि श्रृंखला इस तरह 1 << 0 = 1
से जाती है 2^0 = 1
; 1 << 1 = 2
चूंकि 2^1 = 2
; 1 << 2 = 4
के बाद से 2^2 = 4
और इतने पर ...
पाव (x, y) फ़ंक्शन का उपयोग करें: यहां देखें
बस math.h शामिल करें और आप सभी सेट हैं।
जबकि pow( base, exp )
एक महान सुझाव है, ध्यान रखें कि यह आम तौर पर फ्लोटिंग प्वाइंट में काम करता है हो सकता है।
यह हो सकता है या नहीं हो सकता है कि आप क्या चाहते हैं: कुछ प्रणालियों पर एक संचयकर्ता पर गुणा करने वाला एक साधारण लूप पूर्णांक प्रकारों के लिए तेज होगा।
और विशेष रूप से वर्ग के लिए, आप अपने आप को संख्याओं को एक साथ गुणा कर सकते हैं, फ्लोटिंग-पॉइंट या पूर्णांक; यह वास्तव में पठनीयता (IMHO) में कमी नहीं है और आप एक फ़ंक्शन कॉल के प्रदर्शन ओवरहेड से बचते हैं।
मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है, लेकिन यदि आप क्यूटी के साथ काम करना पसंद करते हैं, तो उनका अपना संस्करण है।
#include <QtCore/qmath.h>
qPow(x, y); // returns x raised to the y power.
या यदि आप qt का उपयोग नहीं कर रहे हैं, तो 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);
}
आप के साथ सौदा करना चाहते हैं base_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
।
ध्यान दें कि दिखाया गया है और इसका उत्तर https://stackoverflow.com/a/2940800/319728pow(x,y)
से कम प्रभावी है ।x*x*x
तो अगर आप दक्षता उपयोग के लिए जा रहे हैं 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 है exp
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;
}
ध्यान दें कि यदि आप किसी भी डेटा प्रकार को लंबे डबल के अलावा पावर के लिए इनपुट देते हैं, तो उत्तर को डबल का प्रचार किया जाएगा। यही कारण है कि यह इनपुट लेगा और आउटपुट को दोगुना देगा। लंबे डबल इनपुट के लिए रिटर्न टाइप लंबा डबल है। int int का उत्तर बदलने के लिए, int c = (int) pow (a, b)
लेकिन, कुछ संख्याओं का ध्यान रखें, इससे सही उत्तर की तुलना में संख्या कम हो सकती है। इसलिए उदाहरण के लिए आपको 5 ^ 2 की गणना करनी है, फिर कुछ कंपाइलरों पर 24.99999999999 के रूप में उत्तर दिया जा सकता है। उत्तर को अंतर करने के लिए डेटा प्रकार बदलने पर 25 सही उत्तर के बजाय 24 होगा। तो, यह करो
int c=(int)(pow(a,b)+0.5)
अब, आपका उत्तर सही होगा। इसके अलावा, बहुत बड़ी संख्या के लिए डेटा डेटा प्रकार को डबल से लॉन्ग लॉन्ग इंट में बदलने में खो जाता है। उदाहरण के लिए आप लिखते हैं
long long int c=(long long int)(pow(a,b)+0.5);
और इनपुट a = 3 और b = 38 दें तो परिणाम 1350851717672992000 होगा, जबकि सही उत्तर 1350851717672992089 है, ऐसा इसलिए होता है क्योंकि pow () फंक्शन वापसी 1.35085ee / 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;
}
लंबी लंबी इंट की सीमा से अधिक संख्या के लिए, या तो बूस्ट लाइब्रेरी या स्ट्रिंग्स का उपयोग करें।
__
आरक्षित हैं, आपको संभवतः कुछ और चुनना चाहिए।