2的100次方,说下你们的思路
2的100次方,说下你们的思路。
我的想法是:建立一个数组35个元素{1,0,0,0,0,0,0,0}第一个是1其余是0
然后用2分别乘以各个数组元素,大于10了向后面的进一位。
可以实现的!
[解决办法]
2的100次方很容易,在二进制中就是1后面加100个0。关键在于你要用它做什么?根据你的用途决定应该如何计算它(从而使你能够使用)。
比如说,你想以十进制显示2的100次方,那么问题的实质是怎样将2的100次方“计算成”能够以十进制使用的形式。二进制转十进制的最佳办法就是*2。所以,还是LZ的方法最好。
当然,使用通用的大数类型的也很好,呵呵。
[解决办法]
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void f(int n)
{
if(n)
{
const int number = 2;
vector <int> vec(1,number);
int i = 1;
while(i != n)
{
vector <int> ::iterator iter = vec.begin();
vector <int> ::iterator itd = vec.begin();
for(;itd != vec.end(); ++ itd)
(*itd) *= 2;
for(;iter != vec.end(); ++ iter)
{
vector <int> ::iterator iter_ = iter + 1;
if((iter_) != vec.end())
{
if((*iter) > 10)
{
(*iter) = (*iter) % 10;
(*(iter + 1)) ++;
}
}
else
if((*iter) > = 10)
{
(*iter) %= 10;
vec.push_back(1);
break;
}
}
++i;
}
vector <int> ::iterator j = vec.end() - 1;
while(j != vec.begin())
{
cout < < (*j);
j--;
}
j = vec.begin();
cout < < (*j);
return;
}
cout < < "1\n ";
return;
}
int main()
{
int n;
cout < < "Input the number: ";
cin > > n;
cout < < "The rusult is: ";
f(n);
system( "PAUSE ");
return 0;
}
[解决办法]
用int数组存放被乘数,按位挨个乘,然后进位
[解决办法]
如果只是要求2进制结果的话,用bitset就行了。。。。
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
bitset <102> b(2);
cout < <(b < <100) < <endl;
system( "pause ");
return 0;
}