提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |