2的200次方

Yann_92 2011-03-30 10:59:58
要精确到个位,还要更大,要能到2的1000次方
...全文
1083 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yann_92 2011-04-15
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

void fun(char *str)
{
int carry = 0;
char *ch;
for (ch = str; *ch; ++ch)
{
int tmp = (*ch - '0') * 2;
*ch = (tmp % 10) + '0' + carry;
carry = tmp / 10;
}
if (carry)
*ch++ = carry + '0';

}

int main()
{
int n,i,j;
char num[10000] = { '\0' };
scanf("%d",&n);

num[0] = '1';
for (i = 0; i < n; ++i)
fun(num);

for (j = strlen(num) - 1; j >= 0; j--)
printf("%c", num[j]);
printf("\n");

return 0;
}
可乐崽 2011-04-06
  • 打赏
  • 举报
回复
11楼的对了,用字符处理大数运算
flysnowhite 2011-04-06
  • 打赏
  • 举报
回复
自定义一个整数数组就解决了
zhangyafei13 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nanbazhangbiao 的回复:]
http://hi.baidu.com/operationsystem/blog/item/6e45dd1af1acadf3ae51330b.html/cmtid/ffd0c9b517d1ce7d8bd4b293
可以参考
[/Quote]

嗯,这个蛮有用的,常试了几个数都蛮有意思的。原来C语言思想很并不是很枯燥的,看来还要多多努力学习.以便了解更多..
skyworth98 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 meteor_code 的回复:]
引用 5 楼 nanbazhangbiao 的回复:
double类型是不可以的了。。任何目前系统定义的类型都不能直接满足条件的。2的1000次方太恐怖了。。
应该用数组或者矩阵之类的吧。。

你可以自己测试一下行不行
IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 双精度浮点数用 1 位表示数字的符号,用 11 位表示指数,52 位表示尾数。
11位的指数位……
[/Quote]
精度呢?别人可是要求精确到个位……
陈思有 2011-04-05
  • 打赏
  • 举报
回复
实在不明白
alweeq86 2011-04-05
  • 打赏
  • 举报
回复

int main()
{
vector<int>result;
result.push_back(1);
//cout<<result.size();
for(int i=0;i<1000;i++)
{
vector<int>::size_type n=result.size();
int carry=0;
for(vector<int>::size_type j=0;j<n;j++)
{
result[j]=result[j]*2+carry;
carry=0;
if(result[j]>=10)
{
carry=result[j]/10;
if(j==n-1)
{
result.push_back(carry);//进位
carry=0;
}

result[j]%=10;
}
}
}

for(int i=result.size()-1;i>=0;i--)
cout<<result[i];

system("pause");

return 0;
}
10715086071862673209484250490600018105614048117055336074437503
22493198378815695858127594672917553146825187145285692314043598
45677748242309854210746050623711418779541821530464749835819412
46077062914571196477686542167660429831652624386837205668069376
  • 打赏
  • 举报
回复
还真不知道怎么弄
hzc543806053 2011-04-05
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<math.h>
main()
{
int i;
double y;
for(i=1;i<=1000;i++)
{
y=pow(2,i);
printf("pow(2,%d)=%.0lf",i,y);
}
}

赵4老师 2011-03-30
  • 打赏
  • 举报
回复
可以参考这个程序算出来
#include <stdio.h>
#include <string.h>
#define MAXLEN 1000
char a1[MAXLEN];
char a2[MAXLEN];
static int v1[MAXLEN];
static int v2[MAXLEN];
static int v3[MAXLEN];
int i,j,n,L,z;
void main(void) {
scanf("%d",&n);
for (j=0;j<n;j++) {
scanf("%s%s",a1,a2);

L=strlen(a1);
for (i=0;i<L;i++) v1[i]=a1[L-1-i]-'0';

L=strlen(a2);
for (i=0;i<L;i++) v2[i]=a2[L-1-i]-'0';

for (i=0;i<MAXLEN;i++) v3[i]=v1[i]+v2[i];

for (i=0;i<MAXLEN;i++) {
if (v3[i]>=10) {
v3[i+1]+=v3[i]/10;
v3[i]=v3[i]%10;
}
}

printf("Case %d:\n", j+1);
printf("%s + %s = ", a1, a2);

z=0;
for (i=MAXLEN-1;i>=0;i--) {
if (z==0) {
if (v3[i]!=0) {
printf("%d",v3[i]);
z=1;
}
} else {
printf("%d",v3[i]);
}
}
if (z==0) printf("0");

printf("\n");
}
}
//Sample Input
//3
//0 0
//1 2
//112233445566778899 998877665544332211
//
//Sample Output
//Case 1:
//0 + 0 = 0
//Case 2:
//1 + 2 = 3
//Case 3:
//112233445566778899 + 998877665544332211 = 1111111111111111110
luxihua 2011-03-30
  • 打赏
  • 举报
回复
没了解楼主的意图。
qq120848369 2011-03-30
  • 打赏
  • 举报
回复
写一个大数加法,然后递推进算.

1+1=2
2+2=4
4+4=8
8+8=16
...
........
2^999+2^999=2^1000
Meteor_Code 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 nanbazhangbiao 的回复:]
double类型是不可以的了。。任何目前系统定义的类型都不能直接满足条件的。2的1000次方太恐怖了。。
应该用数组或者矩阵之类的吧。。
[/Quote]
你可以自己测试一下行不行
IEEE 754 用科学记数法以底数为 2 的小数来表示浮点数。IEEE 双精度浮点数用 1 位表示数字的符号,用 11 位表示指数,52 位表示尾数。
11位的指数位,移码,完全可以表示1000次方
chzhn 2011-03-30
  • 打赏
  • 举报
回复
2的1000次方=10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
nanbazhangbiao 2011-03-30
  • 打赏
  • 举报
回复
double类型是不可以的了。。任何目前系统定义的类型都不能直接满足条件的。2的1000次方太恐怖了。。
应该用数组或者矩阵之类的吧。。
luciferisnotsatan 2011-03-30
  • 打赏
  • 举报
回复
其实就是只有一个 1, 其他都是0
Meteor_Code 2011-03-30
  • 打赏
  • 举报
回复
用double就可以计算这个值,精确定位
2220728 2011-03-30
  • 打赏
  • 举报
回复
用什么类型的值啊
我真的是琦琦 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 huangyan92 的回复:]
要精确到个位,还要更大,要能到2的1000次方
[/Quote]
神马意思,LZ想要什么~~~~

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧