首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

2的100次方,说下你们的思路,该怎么处理

2012-03-11 
2的100次方,说下你们的思路2的100次方,说下你们的思路。我的想法是:建立一个数组35个元素{1,0,0,0,0,0,0,0}

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;
}

热点排行