能帮我看一下我的代码答案错误在哪吗?谢谢。

#include<stdio.h>
int main(){
    int n,m;
    int a[1000][1000],i,j;
    long long int  b[1000];
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++){
        for(j=0;j<i+1;j++){
            if(j==0||i==j){
                a[i][j]=i+1;
            }
            else{
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }
        }
    }
    int s;
    for(i=0;i<n;i++){
        s=0;
        for(j=0;j<i+1;j++){
            s+=a[i][j];
            if(j==i) break;
        }
        b[i]=s;
    }
    int sum,x,y;
    const int p=1e9+7;
    for(i=0;i<m;i++){
        scanf("%d%d",&x,&y);
        sum=0;
    for(j=x-1;j<y;j++){
        sum+=b[j];
    }
    printf("%d\n",sum%p);
    }
    return 0;


全部评论
前缀和更好一点,数组定义全局变量
点赞
送花
回复
分享
发布于 2019-07-14 11:25
老哥,你不是只在答案输出时取模就行了,每个加运算都要取模的啊
点赞
送花
回复
分享
发布于 2019-07-14 19:57
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务