提出 #69669161


ソースコード 拡げる

#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

#ifdef jlocal
#include<jdebug/debug.hpp>
#else
#define debug(...) 0;
#endif

using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int,int> pii;
typedef vector<pii> vii;
template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

#if defined(__LP64__) || defined(_WIN64)
typedef __int128 lll;
#else
typedef long long lll;
#endif

#define pcount(x) __builtin_popcount(x)
#define pcountll(x) __builtin_popcountll(x)
#define all(x) x.begin(),x.end()

const ld pi = 3.14159265358979323846L;
const ld sqrt2 = 1.41421356237309504880L;

template<class T>
istream& operator>>(istream& in, vector<T> &a){
	for (int i = 0; i < a.size(); i ++)
		in >> a[i];
	return in;
}

template<class T>
ostream& operator<<(ostream& out, vector<T> &a){
	for (int i = 0; i < a.size(); i ++){
		if (i > 0) out << ' ';
		out << a[i];
	}
	return out;
}

#if defined(__LP64__) || defined(_WIN64)

istream& operator>>(istream& in, __int128 &x){
	string S;
	in >> S;
	for (char &y : S){
		x *= 10;
		x += (y - '0');
	}
	return in;
}

ostream& operator<<(ostream& out, __int128 &x){
	string s;
	while(x > 0){
		s.push_back((x % 10) + '0');
		x /= 10;
	}
	if (s.size() == 0)
		s.push_back('0');
	reverse(all(s));
	return out << s;
}

#endif

mt19937_64 MT64;
const int maxn = 5001;
vector<int> primos[maxn];
vector<int> primoss;
int m;
void pre_init() {
	MT64 = mt19937_64(chrono::system_clock::now().
	time_since_epoch().count());
	for (int i = 2; i < maxn; i ++){
		bool primo = true;
		for (int j = 2; j * j <= i and primo; j ++){
			if (i % j == 0)
				primo = false;
		}
		if (primo)
			primoss.push_back(i);
	}

	for (int i = 1; i < maxn; i ++){
		primos[i].resize(primoss.size());
		int val = i;

		for (int j = 0; j < primoss.size(); j ++){
			int p = primoss[j];
			if (p > val)
				break;
			while(val % p == 0){
				primos[i][j] ++;
				val /= p;
			}
		}
	}

	for (int i = 3; i < maxn; i ++){
		for (int j = 0; j < primoss.size(); j ++){
			if (primoss[j] > i)
				break;
			primos[i][j] += primos[i - 1][j];
		}
	}
}


void solve(int caso){
	int t;
	cin >> t >> m;
	for (int i = 0; i < t; i ++){
		int n; cin >> n;
		vector<int> c(n);
		cin >> c;
		int suma = 0;
		for (int x : c)
			suma += x;
		vector<int> mapa = primos[suma];


		for (int i2 = 0; i2 < n; i2 ++){
			int valor = i2 + 1;
			int cant = c[i2];
			for (int j = 0; j < primoss.size(); j ++){
				if (primoss[j] > c[i2])
					break;
				mapa[j] -= primos[cant][j];
			}
		}

		ll ans = 1;
		for (int j = 0; j < primoss.size(); j ++){
			int p = primoss[j];
			for (int k = 0; k < mapa[j]; k ++){
				ans = (ans * p) % m;
			}
		}
		cout << ans << '\n';
	}
}

int main(){
#ifndef jlocal
	ios::sync_with_stdio(0); cin.tie(0);
#endif
	pre_init();

	int t = 1;
	for (int i = 1; i <= t; i ++){
		solve(i);
	}
	return 0;
}

提出情報

提出日時
問題 E - Count Sequences 2
ユーザ JOliva
言語 C++ 20 (gcc 12.2)
得点 450
コード長 3188 Byte
結果 AC
実行時間 486 ms
メモリ 16888 KiB

コンパイルエラー

Main.cpp: In function ‘void pre_init()’:
Main.cpp:98:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   98 |                 for (int j = 0; j < primoss.size(); j ++){
      |                                 ~~^~~~~~~~~~~~~~~~
Main.cpp:110:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  110 |                 for (int j = 0; j < primoss.size(); j ++){
      |                                 ~~^~~~~~~~~~~~~~~~
Main.cpp: In function ‘void solve(int)’:
Main.cpp:135:43: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  135 |                         for (int j = 0; j < primoss.size(); j ++){
      |                                         ~~^~~~~~~~~~~~~~~~
Main.cpp:133:29: warning: unused variable ‘valor’ [-Wunused-variable]
  133 |                         int valor = i2 + 1;
      |                             ^~~~~
Main.cpp:143:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
  143 |                 for (int j = 0; j < primoss.size(); j ++){
      |                                 ~~^~~~~~~~~~~~~~~~
Main.cpp:119:16: warning: unused parameter ‘caso’ [-Wunused-parameter]
  119 | void solve(int caso){
      |            ~~~~^~~~
Main.cpp: In instantiation of ‘std::istream& operator>>(std::istream&, std::vector<_Tp>&) [with T = int; std::istream = std::basic_istream<char>]’:
Main.cpp:125:10:   required from here
Main.cpp:36:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   36 |         for (int i = 0; i < a.size(); i ++)
      |                         ~~^~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 2
AC × 51
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt, 01_test_44.txt, 01_test_45.txt, 01_test_46.txt, 01_test_47.txt, 01_test_48.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 13 ms 16568 KiB
00_sample_01.txt AC 12 ms 16680 KiB
01_test_00.txt AC 26 ms 16888 KiB
01_test_01.txt AC 183 ms 16636 KiB
01_test_02.txt AC 111 ms 16456 KiB
01_test_03.txt AC 25 ms 16832 KiB
01_test_04.txt AC 184 ms 16544 KiB
01_test_05.txt AC 114 ms 16552 KiB
01_test_06.txt AC 26 ms 16756 KiB
01_test_07.txt AC 183 ms 16576 KiB
01_test_08.txt AC 113 ms 16528 KiB
01_test_09.txt AC 30 ms 16548 KiB
01_test_10.txt AC 182 ms 16544 KiB
01_test_11.txt AC 114 ms 16688 KiB
01_test_12.txt AC 26 ms 16828 KiB
01_test_13.txt AC 183 ms 16572 KiB
01_test_14.txt AC 114 ms 16584 KiB
01_test_15.txt AC 25 ms 16728 KiB
01_test_16.txt AC 182 ms 16552 KiB
01_test_17.txt AC 113 ms 16592 KiB
01_test_18.txt AC 25 ms 16752 KiB
01_test_19.txt AC 185 ms 16528 KiB
01_test_20.txt AC 116 ms 16584 KiB
01_test_21.txt AC 26 ms 16604 KiB
01_test_22.txt AC 184 ms 16604 KiB
01_test_23.txt AC 116 ms 16532 KiB
01_test_24.txt AC 25 ms 16756 KiB
01_test_25.txt AC 183 ms 16632 KiB
01_test_26.txt AC 112 ms 16632 KiB
01_test_27.txt AC 28 ms 16600 KiB
01_test_28.txt AC 180 ms 16456 KiB
01_test_29.txt AC 112 ms 16528 KiB
01_test_30.txt AC 25 ms 16764 KiB
01_test_31.txt AC 180 ms 16524 KiB
01_test_32.txt AC 112 ms 16528 KiB
01_test_33.txt AC 28 ms 16704 KiB
01_test_34.txt AC 186 ms 16592 KiB
01_test_35.txt AC 115 ms 16604 KiB
01_test_36.txt AC 26 ms 16760 KiB
01_test_37.txt AC 185 ms 16524 KiB
01_test_38.txt AC 114 ms 16452 KiB
01_test_39.txt AC 26 ms 16764 KiB
01_test_40.txt AC 185 ms 16552 KiB
01_test_41.txt AC 115 ms 16556 KiB
01_test_42.txt AC 25 ms 16860 KiB
01_test_43.txt AC 181 ms 16452 KiB
01_test_44.txt AC 111 ms 16584 KiB
01_test_45.txt AC 29 ms 16560 KiB
01_test_46.txt AC 180 ms 16684 KiB
01_test_47.txt AC 113 ms 16524 KiB
01_test_48.txt AC 486 ms 16612 KiB