3 solutions

  • 0
    @ 2024-8-22 9:56:25
    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
        int T;
        cin>>T;
        while(T--){
            int n;
            cin>>n;
            int cnt1=0,cnt2=0,cnt3=0;
            for(int i=1;i<=n;i++){
                int x;cin>>x;
                if(x%3==1) cnt1++;
                if(x%3==2) cnt2++;
                if(x%3==0) cnt3++;
            }
            int c=min(cnt1,cnt2);
            cout<<(cnt3+c+((max(cnt1,cnt2)-min(cnt1,cnt2))/3))<<'\n';
        }
        return 0;
    }
    
    • @ 2025-12-30 17:45:42

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

      #include #include using namespace std;

      // 计算两个数的最大公约数,使用欧几里得算法 long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }

      // 计算一个数的约数个数 int countDivisors(long long num) { int count = 0; // 遍历从 1 到 num 的平方根 for (long long i = 1; i * i <= num; ++i) { if (num % i == 0) { // 如果 i 是 num 的约数 if (i * i == num) { // 若 i 是 num 的平方根,只算一个约数 ++count; } else { // 否则 i 和 num/i 都是约数,算两个 count += 2; } } } return count; }

      int main() { int n; cin >> n; vector numbers(n); for (int i = 0; i < n; ++i) { cin >> numbers[i]; } // 先将第一个数作为初始的最大公约数 long long commonGCD = numbers[0]; // 遍历数组,计算所有数的最大公约数 for (int i = 1; i < n; ++i) { commonGCD = gcd(commonGCD, numbers[i]); } // 计算最大公约数的约数个数 int divisorCount = countDivisors(commonGCD); cout << divisorCount << endl; return 0; }

Information

ID
212
Time
2000ms
Memory
512MiB
Difficulty
3
Tags
(None)
# Submissions
80
Accepted
43
Uploaded By