pokerjest
2017-10-28 01:50
采纳率: 66.7%
浏览 875
已采纳

hdu 2032之前还是好好的杨晖三角,后来数据就不对了。

#include
int main(void)
{
long long n, i, j, k, x, y, s1, s2;

while (scanf("%lld", &n) != EOF)
{
    printf("1\n");
    for (i=2; i<=n; i++)//第一行直接打印,从第二行开始打印数字
    {
        printf("1 ");
        for (x=3, j=i-1, k=1, s1=1, s2=1; x<=i; x++, j--, k++)//从第三行开始打印数据,且跳过前后的两个1
        {
            s1 *= j;
            s2 *= k;
            printf("%lld ", s1/s2);
        }
        printf("1\n");
    }
}


return 0;

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • crazyskady 2017-11-02 04:48
    已采纳

    x:20, j:4, k:18, s1:8515157028618240000, s2:6402373705728000, s1/s2:1330
    x:21, j:3, k:19, s1:7098727012145168384, s2:121645100408832000, s1/s2:58
    x:22, j:2, k:20, s1:-4249290049419214848, s2:2432902008176640000, s1/s2:-1

    你的这个算法在x到22的时候就long long溢出了。所以异常啦~~~

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2017-10-28 03:00
    评论
    解决 无用
    打赏 举报
  • jssmartstar 2017-10-28 03:31

    哪里不对了,讲清楚点

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题