最近做了这道水题,发现我把统计数量的变量ans设为全局变量,就会TLE。 设为局部变量才能过,这是什么意思?????难搞哦
下两组代码只有ans 初始化位置不同,一个t,一个ac
①:t
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 3e4 + 10; int n, k; int ans = 0; int a[N]; int sum[N]; int main() { scanf("%d", &n); for(int i = 1; i <= n; i++){ scanf("%d", &a[i]); } scanf("%d", &k); for(int i = 1; i <= n; i++){ sum[i] = (sum[i - 1] + a[i]) % k; } // int ans = 0; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n - i + 1; j++){ if((sum[j+i-1] - sum[j-1]) % k == 0){ ans++; } } } printf("%d\n", ans); return 0; }②ac
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 3e4 + 10; int n, k; // int ans = 0; int a[N]; int sum[N]; int main() { scanf("%d", &n); for(int i = 1; i <= n; i++){ scanf("%d", &a[i]); } scanf("%d", &k); for(int i = 1; i <= n; i++){ sum[i] = (sum[i - 1] + a[i]) % k; } int ans = 0; for (int i = 1; i <= n; i++){ for (int j = 1; j <= n - i + 1; j++){ if((sum[j+i-1] - sum[j-1]) % k == 0){ ans++; } } } printf("%d\n", ans); return 0; }