有坑!!

P3932 浮游大陆的68号岛

哦对了,要大佬看ans为什么是负数肯定要附上代码 ```cpp #include <bits/stdc++.h> #define N 200005 #define mod 19260817 int n,m; long long int a[N],g[N],i,j,t,f[N],sum[N]; int main(){ scanf("%d%d",&n,&m); g[1] = 0 , g[0] = 0, f[0] = 0; for(i = 2;i <= n; i++){ scanf("%d",&t); g[i] = (t + g[i - 1]) % mod; } for(i = 1;i <= n; i++){ scanf("%d",&a[i]); f[i] = (f[i - 1] + a[i]) % mod; sum[i] = (sum[i - 1] + (g[i] * a[i]) % mod) % mod; } for(i = 1;i <= m; i++){ int x,l,r,ans = 0; scanf("%d%d%d",&x,&l,&r); if(x >= l && x <= r) ans = sum[r] - sum[x] - (g[x] * (f[r] - f[x - 1])) % mod + sum[l - 1]- sum[x - 1] + (g[x] * (f[x] - f[l - 1])) % mod; else if(x < l) ans = sum[r] - sum[l - 1] - (g[x] * (f[r] - f[l - 1])) % mod; else ans = (g[x] * (f[r] - f[l - 1])) % mod - (sum[r] - sum[l - 1]); while(ans < 0) ans += mod; printf("%d\n",ans % mod); } return 0; } ```
by xw001 @ 2017-10-22 17:30:20


加 if (ans<mod) ans+=mod;
by liangjialin @ 2017-10-22 18:37:07


负数取模还是负数, 所以 要 (ans % mod + mod) % mod
by Hzxleo4 @ 2017-10-22 19:19:37


![](https://cdn.luogu.com.cn/upload/pic/9396.png)
by 青衫白叙 @ 2017-10-22 20:05:52


@[liangjialin](/space/show?uid=30361) 不不不,你这都代码不行的,我写了个ans = (ans + mod) % mod 都还是负数,应该像你楼下那样写,(ans % mod + mod) % mod
by xw001 @ 2017-10-22 21:27:47


@[Hzxleo4](/space/show?uid=31619) 感谢大佬指点
by xw001 @ 2017-10-22 21:32:54


@[xw001](/space/show?uid=15044) 原来是写法不一样 wo cai buhui gaosu ni,wo wanquan ni de daima
by liangjialin @ 2017-10-25 07:52:44


wo cai buhui gaosu ni,wo wanquan 看ni de daima
by liangjialin @ 2017-10-25 07:55:55


wo cai buhui gaosu ni,wo wanquan not看ni de daima
by liangjialin @ 2017-10-25 07:56:55


|