标题:数据严重越界问题
只看楼主
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
结帖率:50%
已结贴  问题点数:20 回复次数:10 
数据严重越界问题
1.相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐.这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧.就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都是比前一格的两倍,依此放完棋盘一64格,我就感激不尽了.舍罕王让人扛了一袋麦子,他要兑现他的许诺.
请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相?
代码:
#include<stdio.h>
int main()
{
 int i, n;
 long long sum=0;
 for(n = 1, i = 1; i <= 64; i++)
 {
  sum = sum + n;
  n = n * 2;
 }
 printf("%lu",sum);
}

2.编写一个程序,计算1977!的值
这题更本不会下手


谢谢各位大神的帮忙!
搜索更多相关主题的帖子: 国际象棋 include 印度 
2016-03-23 21:17
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
得分:0 
回复 楼主 匆匆来过
第一题的代码我少了  return 0;

努力打代码
2016-03-23 21:22
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
得分:0 
好消息,第一题是我脑子坏掉了,搞好了代码如下,帮我看看第二题好吗各位大神
#include<stdio.h>
int main()
{
    int i, n;
    unsigned long long sum = 0;
    for (n = 1, i = 1; i <= 64; i++)
    {
        sum = sum + n;
        n = n * 2;
    }
    printf("%llu", sum);
    return 0;
}

努力打代码
2016-03-23 21:26
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:3 
程序代码:
#include<stdio.h>

int main()
{

 int i;

 unsigned long long sum=0,n;  //long long还是不够大
 

 for(n = 1, i = 1; i <=64; i++)

 {
  sum = sum + n;
  n = n * 2;

 }

 

 printf("%I64u",sum);  //输出格式
 

 return 0;
}

   唯实惟新 至诚致志
2016-03-23 21:28
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
得分:2 
这个问题还得请rjsp大神,这个不会啊。https://bbs.bccn.net/thread-462704-1-1.html

   唯实惟新 至诚致志
2016-03-23 21:33
wadeyu
Rank: 1
等 级:新手上路
帖 子:9
专家分:2
注 册:2016-3-22
得分:2 
1。第一题可以使用等比数列求和公式
2。第二题主要难点是没有整型可以保存那么大的数字,这个只能使用数字字符来代替,能后模拟人工相乘,这个GOOGLE下"大数据相乘算法"应该能找到相关的信息
2016-03-23 21:39
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
得分:0 
回复 4楼 qq1023569223
嗯,的确,我在三楼已经搞好了

努力打代码
2016-03-23 22:09
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
得分:0 
回复 5楼 qq1023569223
看不懂,哈哈,还是待大神仔细分析

努力打代码
2016-03-23 22:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:13 
第一题很简单,就是 2的“格子数”次方,再减一
数学公式是 2^n - 1
C语言伪代码是 (1<<n)-1
程序代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main( void )
{
    // 如果是64格
    printf( "%"PRIu64"\n", (uint64_t)0-1 );
   

    // 如果是小于64格,比如63格
    printf( "%"PRIu64"\n", ((uint64_t)1<<63)-1 );
}

第二题算法上没有好说的,就是弄个数组来模拟大数乘法
以下算法未作优化,以便于阅读
程序代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main( void )
{
    uint32_t s[1000] = { 1 };
    size_t n = 1;

    for( uint64_t i=1; i<=1977; ++i )
    {
        uint64_t carry = 0;
        for( size_t j=0; j!=n; ++j )
        {
            carry += s[j]*i;
            s[j] = carry % 1000000000;
            carry /= 1000000000;
        }
        if( carry != 0 )
        {
            if( n+1 == sizeof(s)/sizeof(*s) )
                return 1; // 保险措施,一旦遇到这种情况,需要将s数组增大
            s[n++] = carry;
        }
    }

    printf( "%"PRIu32, s[n-1] );
    for( size_t i=n-1; i!=0; --i )
        printf( "%09"PRIu32, s[i-1] );
    printf( "\n" );

    return 0;
}
输出
44885501861451087214610857079909248837424492260428166724654147729643971700105425720084828218702600864349140553199425461195269756193449196420567670679997930497776962868627670814088525137310931384053497107655953166587777978189922585102015543252313842383879336452450405459365865930993882304967506579365573169114407061415044954204598042872984994370362994974190731648365853764021641267208890952183486957937797501412079339876017057593846219506921136683729082140979815738837181904628215025970879798689459975470705399719623801943630265034717650140070948581455541860388599570712955903767340302796772249678308667271334347735171920753722738382693169959755895777926922251934138946424062651593626615221554668142680371533735545526245936393642639820076708459169410776182481701982480050935429118156542429067920764915432851090578762675010478117563049656075543746119739717069866844883357409792569209134960636899425405149847065831281602082518075830646453654516317941696388277090166892581177070312338391653451955318906268079481790194265751853219151144318930316453953750991148493823206443369425944001941242917619527312311207417490693701494050808890878867975845117860433305316607551476965975790906896956127068298433273240281529950530069641805218400403258304360527381746385960815854239125565833311599210531902596579244149649008262885625747559728294814901871961517895638622905618910600921127432523435482034431607171597093293499891539807469664419507507385877763852240766577618864272175955102012797157374020057234790470573845442607086246849758817092472168600233686805040307801018904746900136895007446767892015103691546758917875283121559678424003351902375286355906676294721988128226509353084890739795591400978292429823019720587768866778565392965756177032714260472652522638182042178310497913363256666800211643586936480222169051736890119033575641362239097097668967707166546262165398342392082223840669956935518432433500512388128400501454567656003140699526312023215530969441249645000266981731474774311788566684103080652651130203579577659975621990943301760656291769606581621697893381784095276308563096667204798424584607702111698065254798376863076775838978795969975490569630809412346134850519967391026203435895655178226018567556450547196780276455924702875584894370421382586806714454592324162291540557289594093207488369616272458093646865153652591651977875393766158034846660994538470440002956734058798262392142018920993818689377588368163212024980190732396123717654885345318311881246452386979748492361608880215366959550154169889976098868177465811974997151687956412035252091325327239663869718509994035950918164411361389182525735435503547508839069279412344659861985920520906072587123123331095210491314236109240894403174951136822689796682524419281202547410727207049300182313660882768899486299620250523429591273583672949060001392324716645374632799121425207847994631057230794080496305639953304416917362257038854013896602584668330878544023543613061625753736164860737224928877680952653955796563792519162354541809473826165637051852050551375789673906991015231770191344532237230197212247808977750167304211358001556586938445903710297655467254175868400223251027316617594966819372453229090075416331169907476721079357279340658265132544616671356523759070808402554409562998869466175554581595720186681291377238031229963602424692724581562963871555299756846210719567248993090291643090340865372994247770175629123166395093036590992401428163026242637631276118954137752850608058698188636249011898545242604954174231816312797226812573427520943156653441116944356313617111649439782483116345998865356371264021702934385830524607545916082681723336300525740351901199785928918756667131759364856921713383210912328024559654704854102702259188968835912529499829982173477142559122574238026368742589720302024351936092912062935207156160753422673950733411087659019615053695175512684860561708230621159432059777334251461120470573475673358987108714856295142438953966517877419012271749890653388333329644505840068967629673118338646511218029658964431806630859185514092919508645264791768635043717176995406906564969624139415056784502969192669845401546983119762050259532817708831129549658092293235478320212147238061012342575368912996276889850467927800530591024505261738190292620196591471057917771997314616468851435648447291509773768541016965006318582734773265425619413143971696759006852267259561850525423115448245064957917308932248736590889553216053395073528665556848023503474296872182653139085069088572995129970277847947107821860675145364682650925420911412190721877818056372224222386334296773926506377426553303395543283286979254479006385723721651473737581750366456411044778457816144171346913394986370709474086023995999519809157066651288416873822563589323100234110838358055086897561674267091601132114100558679834327264396337664219084247730733599995905528037136968919519302002171318340744996774790395419281259057908266922735066452279956814516691434241768267941233868352917686780465248273578999914786724525402231196812975707174605005153159430528247125884412573041717023369550991289730066133225519782887483548537172695747744050948960901844040458316467701938297164400940155373802267886187842636408654937504031184246746956396377352375369130175324314589462528000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


2016-03-24 12:43
匆匆来过
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:9
注 册:2015-12-27
得分:0 
回复 9楼 rjsp
谢谢大神!

努力打代码
2016-03-24 16:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462835-1-1.html




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

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