| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 398 人关注过本帖
标题:一道ACM的水题,不知道为什么会溢出,新人求助
只看楼主 加入收藏
ashu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-2-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
一道ACM的水题,不知道为什么会溢出,新人求助
一千零一液
时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 157            测试通过 : 44
描述
小时候的YB,有一个特殊的癖好,就是收集各种液体,他家的柜子上已经摆满了他所收集的液体,而他家的柜子正好有10001排。每一排都摆放了不同的液体数量,第一排的液体总数是1,第二排液体总数是2+3+4,第三排的液体总数是5+6+7+8+9,依此类推。由于YB对一种叫做“欧液”的液体情有独钟,所以,他在除了第一排以外的每一排都放置了这种液体,而对于任意一排的欧液数,始终都等于它前一排的不是欧液的液体总数。现在,YB已经收集了所有的液体,他现在要给每一排编号,即他想知道在第几排一共有多少的液体.以及这一排有多少的欧液
输入
第一行有一个整数t(0<t<=10),表示有t组测试数据,对于每组测试数据,只有一个正整数n(0<n<=10001)。   
输出
输出有2个数,用空格隔开,分别是第n排的所有液体总数以及第n排欧液的液体数。
样例输入
3
1
3
2
样例输出
1 0
35 8
9 1



我的程序:
#include<stdio.h>
ouye(long int a[],long int b[],int n)
{
    if(n==1)
       return b[1]=0;
    else
        return b[n]=a[n-1]-ouye(a,b,n-1);
}
main()
{
    int t,n,i,j,k;
    long int b[10002],a[10002];
    scanf("%d",&t);
    a[1]=1;
    for(i=2;i<=10001;i++)
    {
        a[i]=0;
        for(j=(i-1)*(i-1)+1;j<=i*i;j++)
            a[i]+=j;
    }
    for(i=0;i<t;i++)
    {
        scanf("%d",&n);
        printf("%d %d\n",a[n],ouye(a,b,n));
    }
}
搜索更多相关主题的帖子: Java 柜子 
2014-02-27 00:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
好像涉及大数运算了

DO IT YOURSELF !
2014-02-27 00:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
这么简单的玩意,用循环已经很变态了,还递归?!

程序代码:
#include <stdio.h>

int main()
{
    unsigned t;
    scanf( "%u", &t );
    for( unsigned i=0; i!=t; ++i )
    {
        unsigned n;
        scanf( "%u", &n );

        printf( "%llu %llu\n", n*(n*(2ull*n-3)+3)-1, (n-1ull)*(n-1)*(n-1) );
    }

    return 0;
}
输入 4 1 2 3 10001
输出
1 0
9 1
35 8
2000300030001 1000000000000
2014-02-27 09:36
ashu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-2-4
收藏
得分:0 
回复 3楼 rjsp
这个%u是无符号整数吗?所以数的范围会比较大?你是直接输出的公式吧,我不用公式就是因为整型会溢出,能不能详细讲一下?我是新手,不是很看得懂你的代码里的一些东西
2014-02-27 14:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
跟%u没关系
我用的是 unsigned long long 类型,printf( "%llu %llu\n", n*(n*(2ull*n-3)+3)-1, (n-1ull)*(n-1)*(n-1) );
2014-02-27 16:17
klapset
Rank: 4
等 级:业余侠客
威 望:2
帖 子:71
专家分:234
注 册:2014-2-27
收藏
得分:0 
目测版主vs。
2014-02-28 09:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用klapset在2014-2-28 09:32:51的发言:

目测版主vs。

你想说我用的是 Visual Studio 吗?从哪里能看出来?我用的是标标准准的C语法,不掺杂一丝一毫非标准的东西,你是看不出我用什么编译器的。
事实上,你也猜错了,我用的是 MinGW-4.8.1,以下是编译信息:
codelitegcc gcc -c  "D:/sources/g001/main.c" -g -std=c11 -fexec-charset=GBK  -o ./Debug/main.o -I. -I.
gcc -o ./Debug/g002 @"g002.txt" -L. -LC:/MinGW/lib
mingw32-make.exe[1]: Leaving directory 'D:/sources/g001'
0 errors, 0 warnings
2014-02-28 09:40
快速回复:一道ACM的水题,不知道为什么会溢出,新人求助
数据加载中...
 
   



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

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