专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++

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

发布时间:2011-06-28 21:48:21 文章来源:www.iduyao.cn 采编人员:星星草
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 < < "1n ";
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;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: