| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7403 人关注过本帖
标题:2的1到64次方之和
只看楼主 加入收藏
tompobing
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:260
专家分:809
注 册:2012-12-9
结帖率:78.13%
收藏
已结贴  问题点数:30 回复次数:11 
2的1到64次方之和
你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。

    国王以为他只是想要一袋麦子而已,哈哈大笑。

    当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!

    请你借助计算机准确地计算,到底需要多少粒麦子。





#include
#include
int main()
{
    char* p;
    char* q;
    char *w;
    char a[200]={0};
    char b[200]={0};
    int i;
    p=a;
    q=b;
    *p='1';
    *q='1';
    for(i=1;i<64;i++)
    {
        while(*p!=0)
        {
            *p=(*p)*2;
            if(*p>'9')
            {
                (*(p+1))++;
                *p=(*p)%10;
            }
            p++;
        }
       for(w=p,q=b;*w!=0&&*q!=0;w++,q++)
       {
           *q=*q+*w;
           if(*q>9)
           {
               (*(q+1))++;
               *q=(*q)%10;
           }
       }
    }
    puts(b);
    return 0;

}


为什么程序结果是1,求高手帮我改下程序
搜索更多相关主题的帖子: 计算 国际象棋 include 全世界 
2013-05-02 21:52
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
问题比较多,先问你最重要的一个问题

‘1’ * 2 = ‘2’ ??


[fly]存在即是合理[/fly]
2013-05-02 22:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:5 
正文描述来看是求 2的0到63次方之和,但标题却是 2的1到64次方之和,不知道楼主意欲何为

2的0到63次方之和 = 2的64次方-1
2的1到64次方之和 = 2的0到64次方之和-1 = 2的65次方-2
2013-05-03 08:43
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
收藏
得分:5 
程序代码:
#include<stdio.h>
static int a[200],b[200];
void fun1()
{
    int i;
    for(i=0;i<200;i++)
        a[i]*=2;
    for(i=0;i<200;i++)
        if(a[i]>10000)
        {
            a[i+1]+=a[i]/10000;
            a[i]%=10000;
        }
    
}
void fun2()
{
    int i;
    for(i=0;i<200;i++)
        b[i]+=a[i];
    for(i=0;i<200;i++)
        if(b[i]>10000)
        {
            b[i+1]+=b[i]/10000;
            b[i]%=10000;
        }
    
}
void output()
{
    int i,k=0;
    for(i=199;i>=0;i--)
    {
        if(b[i]!=0)
            k=1;
        if(k)
            printf("%d",b[i]);
    }
        
}
int main()
{
    int i;
    a[0]=1;
    b[0]=1;
    for(i=0;i<63;i++)
    {
        fun1();
        fun2();
    }
    output();

}

杀鸡焉用牛刀。
程序代码:
#include<stdio.h>
static int a[200],b[200];
void fun1()
{
    int i;
    for(i=0;i<200;i++)
        a[i]*=2;
    for(i=0;i<200;i++)
        if(a[i]>10000)
        {
            a[i+1]+=a[i]/10000;
            a[i]%=10000;
        }
    
}
void fun2()
{
    int i;
    for(i=0;i<200;i++)
        b[i]+=a[i];
    for(i=0;i<200;i++)
        if(b[i]>10000)
        {
            b[i+1]+=b[i]/10000;
            b[i]%=10000;
        }
    
}
void output()
{
    int i,k=0;
    for(i=199;i>=0;i--)
    {
        if(b[i]!=0)
            k=1;
        if(k)
            printf("%d",b[i]);
    }
        
}
int main()
{
    int i;
    a[0]=1;
    b[0]=1;
    for(i=0;i<63;i++)
    {
        fun1();
        fun2();
    }
    output();

}

杀鸡焉用牛刀。

有问题一起探讨,一起进步。
2013-05-03 08:45
y3765258
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:172
注 册:2013-4-9
收藏
得分:0 
卡了。。。

有问题一起探讨,一起进步。
2013-05-03 08:45
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
收藏
得分:5 
啧啧。。。学习

极品菜鸟,来学习啦,啦啦啦啦啦啦啦。。。
2013-05-03 11:17
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:5 
2的 64次方,电脑会卡死!~
2013-05-03 17:34
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:5 
有意思

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-05-03 19:38
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
我贴一个,能算2的几万次方,要求几十万只要把数组下标改大点就行。
程序代码:
[color=#0000FF]#include <STDIO.H>
#include <STring.H>
void main(){
    char a[10240];
    memset(a,'0',sizeof(a));
    int i,j,t,n,k,m;
    char b;
    for(i=0,n=1,a[i]='1';i<10000;i++){//求2的64次方,需要求2的n次方,只要把64改动一下

        k = n;
        j = 0;
        t = 0;
        while(k){

            b = a[j];
            m = 0;
            if(t) { b--;m = 1; }//进位了,要减回进位的1
            t = 0;

            switch(b){
            case  '1':
                a[j] = '2'+m;break;
            case  '2':
                a[j] = '4'+m;break;
            case  '3':
                a[j] = '6'+m;break;
            case  '4':
                a[j] = '8'+m;break;
            case '5':
                a[j] = '0'+m;a[j+1]+=1;t=1;break;
            case  '6':
                a[j] = '2'+m;a[j+1]+=1;t=1;break;
            case  '7':
                a[j] = '4'+m;a[j+1]+=1;t=1;break;
            case  '8':
                a[j] = '6'+m;a[j+1]+=1;t=1;break;
            case  '9':
                a[j] = '8'+m;a[j+1]+=1;t=1;break;
        }

        k--;
        j++;

        }
        n+=t;
    }
    while(n+1)  putchar(a[--n]);
    putchar(10);
return;
}

[/color]

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-05-03 21:03
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
经测算,2的10000次方有3011位。

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-05-03 21:07
快速回复:2的1到64次方之和
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015442 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved