13 条题解
-
3doc LV 10 MOD @ 2014-11-17 12:31:06
我来说一下这个题目怎么做. sujiao作为出题人, 如果有空最好也发一下说明, 估计小朋友等不动年鉴了...
(1) 先说一下O(nm)的算法. 大家应该都知道可以把所有系数A_i都mod一个大素数, 之后在O(n)内判定一个数字x是不是解的方法了. 那么直接用这样的方法可以判定所有的数字, 时间复杂度是O(nm)的, 在noip现场应该可以得到期望得分70分. 在加强版的题目中应该可以得到40分.
(2) 再说一下O(m)的算法, 这个算法应该是可以在noip现场轻松通过所有数据的. 因为O(nm)会超时, 那么我们不妨只考虑1<=x<=K<m的所有数字是不是解, 时间复杂度O(nk), 这里k需要自己选取. 之后对于1<=x<=m, 我们可以用已经算出来的x%k的结果, 去很大概率估计x是不是解. 有着更强正确率的方法是, 寻找若干个不同的k, 甚至最好选取k个大小相差不多的素数, 比如说我们选取10个k0,k1,...,k9. 那么x是不是根就利用x%ki来判定.
(3) O(n^3+nsqrt(m))的算法, 我们选取素数p0,p1满足p0^2>=m,p1^2>m.然后在mod(pi)意义下算出来0<=x<pi的所有根, 这一部分的时间复杂度是O(nsqrt(m))的. 可以说明, 找到的两组根都不超过n个, 我们记为t1,t2,...,tu和s1,s2,...,sv. 那么我们断言原问题的可行根x一定可以通过某一个ti和某一个sj组合得到, 再利用O(n)的方法判定是不是根. 这一部分的时间复杂度是O(n^3), 这样可以通过所有的数据.
最后散扯一句, 利用heoi2012的Akai的数学作业一题的方法, 可以在noip现场骗到满分. heoi2012这个题目当年就是我出的, 所以过一段时间我就在vijos上挂出来. [等我找到遗失的数据之后...=_=...]
-
22017-10-15 23:49:32@
。。。代码都有很多了,我建议三个好运质数。
15013,15083,30323;
三个一起验证应该就能过了#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #define ll long long using namespace std; const int MOD1=15013; const int MOD2=30323; const int MOD3=15083; const int LIM=10033; char s[LIM]; int n,m; int a1[103],a2[103],a3[103]; int ans[1000033],acnt=0; int main() { scanf("%d%d",&n,&m); ll a,b,c;int len; bool flag; for(int i=0;i<=n;++i) { flag=0; scanf("%s",s); if(s[0]=='-') { flag=1; s[0]='0'; } len=strlen(s); a=0;b=0;c=0; for(int j=0;j<len;++j) { a=(a*10+s[j]-'0')%MOD1; b=(b*10+s[j]-'0')%MOD2; c=(c*10+s[j]-'0')%MOD3; } if(flag){ a1[i]=-a; a2[i]=-b; a3[i]=-c; }else{ a1[i]=a; a2[i]=b; a3[i]=c; } } ll mi1,mi2,mi3; ll sum1,sum2,sum3; for(int i=1;i<=m;++i) { mi1=1,mi2=1,mi3=1; sum1=a1[0]; sum2=a2[0]; sum3=a3[0]; for(int j=1;j<=n;++j) { mi1=mi1*i%MOD1; mi2=mi2*i%MOD2; mi3=mi3*i%MOD3; sum1+=a1[j]*mi1%MOD1; sum2+=a2[j]*mi2%MOD2; sum3+=a3[j]*mi3%MOD3; } sum1=(sum1+MOD1)%MOD1; sum2=(sum2+MOD2)%MOD2; sum3=(sum3+MOD3)%MOD3; if(sum1==0&&sum2==0&&sum3==0){ ans[++acnt]=i; } } printf("%d\n",acnt); for(int i=1;i<=acnt;++i) { printf("%d\n",ans[i]); } return 0; }
-
12015-10-20 23:25:27@
一开始质数选的太大,导致后三个点超时,换了小点的就过了......
#include <cstdio>
#include <cstdlib>
#include <cstring>using namespace std;
int n, m;
char a[105][10005];
int len[105];
long long mo[10][105];
int MOD[8] = {0, 73019, 78919, 78901};
int ans[1000005], cnt;
bool flag[1000005];void calcu(int k, int num, int st) {
if (st == 0)
for (int i = st; i < len[num]; ++i) {
mo[k][num] *= 10;
mo[k][num] += (a[num][i] - '0');
mo[k][num] %= MOD[k];
}
else
for (int i = st; i < len[num]; ++i) {
mo[k][num] *= 10;
mo[k][num] += ((-(a[num][i] - '0')) % MOD[k] + MOD[k]);
mo[k][num] %= MOD[k];
}}
long long pow(int p, int q, int k) {
if (q == 1)
return p;
if (q & 1)
return ((pow(p, q - 1, k) * p ) % MOD[k]);
else {
long long x = pow(p, q / 2, k) % MOD[k];
return (x * x) % MOD[k];
}
}
int main(int argc, const char argv[]) {
scanf("%d %d", &n, &m);
char p;
getchar();
for (int i = 0; i <= n; ++i) {
p = getchar();
while (p == '-' || '0' <= p && p <= '9') {
a[i][len[i]++] = p;
p = getchar();
}
}
int st;
for (int k = 1; k <= 3; ++k) {
for (int i = 0; i <= n; ++i) {
if (a[i][0] == '-')
st = 1;
else
st = 0;
calcu(k, i, st);
}
}
long long sum;
for (int i = 1; i <= m; ++i) {
if (flag[i])
continue;
bool f = true;
for (int k = 1; k <= 3; ++k) {
sum = mo[k][n];/
for (int j = 1; j <= n; ++j) {
sum += (mo[k][j] * pow(i, j, k)) % MOD[k];
sum %= MOD[k];
}*/
for (int j = n - 1; j >= 0; --j) {
sum *= i;
sum %= MOD[k];
sum += mo[k][j];
sum %= MOD[k];
}
if (sum != 0) {
for (int j = i; j <= m; j += MOD[k])
flag[j] = true;
f = false;
break;
}
}
if (f) {
ans[++cnt] = i;
}
}
printf("%d\n", cnt);
for (int i = 1; i <= cnt; ++i) printf("%d\n", ans[i]);
return 0;
} -
02018-08-05 16:49:05@
MOD几个质数,测试即可
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MOD1 23593 #define MOD2 30271 #define MOD3 32213 #define DIG(x) (x - '0') char eqn[101][10005]; int m1[101]; int m2[101]; int m3[101]; int m1_results[MOD1]; int m2_results[MOD2]; int m3_results[MOD3]; int n, m; void check(int mod, int *coeffs, int *results) { int i, j; for (i = 0; i <= n; i++) { int last; int ans; int base = 0; if (eqn[i][0] == '-') base = 1; if (strlen(eqn[i]) < 5 + base) { coeffs[i] = atoi(eqn[i]); continue; } ans = DIG(eqn[i][base])*10000 + DIG(eqn[i][base+1])*1000 + DIG(eqn[i][base+2])*100 + DIG(eqn[i][base+3])*10 + DIG(eqn[i][base+4]); for (last = base + 4; eqn[i][last]; last++) { ans %= mod; if (eqn[i][last+1]) { ans *= 10; ans += DIG(eqn[i][last+1]); } } if (base) { coeffs[i] = mod - ans; if (coeffs[i] == mod) { coeffs[i] = 0; } } else { coeffs[i] = ans; } /*printf("%d\n", coeffs[i]);*/ } for (i = 0; i < mod; i++) { int pwrs[101]; int eval_result = 0; pwrs[0] = 1; for (j = 1; j <= n; j++) { pwrs[j] = pwrs[j-1] * i; pwrs[j] %= mod; } for (j = 0; j <= n; j++) { eval_result += (((coeffs[j] * pwrs[j]) % mod) + mod) % mod; /*if (i == 1) { printf("%d %d %d\n", coeffs[j], pwrs[j], eval_result); }*/ if (eval_result >= mod) eval_result -= mod; } results[i] = eval_result; } } int main() { int i, cnt = 0; scanf("%d%d", &n, &m); for (i = 0; i <= n; i++) { scanf("%s", eqn[i]); } check(MOD1, m1, m1_results); check(MOD2, m2, m2_results); check(MOD3, m3, m3_results); for (i = 1; i <= m; i++) { if (!m1_results[i % MOD1] && !m2_results[ i % MOD2] && !m3_results[i % MOD3]) { cnt++; } } printf("%d\n", cnt); for (i = 1; i <= m; i++) { if (!m1_results[i % MOD1] && !m2_results[ i % MOD2] && !m3_results[i % MOD3]) { printf("%d\n", i); } } return 0; }
-
02016-11-07 21:21:55@
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#define mo1 21893
#define mo2 18341629
using namespace std;
char s[150][10000+50];
vector<int> ans,line;
int xishu1[150],xishu2[150],n,m;
void read(string &kk)
{
int cnt=0;
char c;
c=getchar();
while(c!='\n')
{
kk[cnt++]=c;
c=getchar();
}
}
int main()
{
bool fuhao;
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++)
scanf("%s",s[i]);
for(int i=0;i<=n;i++)
{
int temp1=0,temp2=0;
fuhao=false;
for(int j=0;;j++)
{
if(s[i][j]>'9'|s[i][j]<'0') if(s[i][j]!='-') break;
if(s[i][j]=='-') {fuhao=true;continue;}
temp1=temp1*10+(s[i][j]-'0'),temp1%=mo1;
temp2=temp2*10+(s[i][j]-'0'),temp2%=mo2;
}
xishu1[i]=temp1;xishu2[i]=temp2;
if(fuhao) xishu1[i]*=-1,xishu2[i]*=-1;
}for(int i=1;i<=mo1;i++)
{
long long val=0,pow=1;
for(int j=0;j<=n;j++)
{
(val += xishu1[j] * pow) %=mo1;
pow = pow * i % mo1;
}
if(val==0)
{
int key=i;
while(key<=m)
{
line.push_back(key);
key+=mo1;
}
}
}for(int i=0;i<line.size();i++)
{
long long val=0,pow=1;
for(int j=0;j<=n;j++)
{
(val += xishu2[j] * pow) %=mo2;
pow = pow * line[i] % mo2;
}
if(val==0)
ans.push_back(line[i]);
}
printf("%d\n",ans.size());
sort(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++)
printf("%d\n",ans[i]);
return 0;
} -
02015-10-24 21:32:39@
-
02015-10-21 18:55:56@
没啥好讲的。似乎就是有那么个数学方法吧、、反正至少30分是白送的。。
最下面的DOC大大已经基本讲的很明白了。反正就是选几个大素数,拿系数去mod再判断。如果多个素数都枚举成立就能当作是正确答案。至于素数选那几个反正比较接近就差不多了。
如果问去哪里找素数= =自己花5分钟写个素数筛输出所有素数自己选吧= =
-
02015-10-20 21:37:44@
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN = 10000 + 10;
const int Q = 4;int q[10] = {0, 14983, 14947, 24989, 19997, 11987, 13999};
char s[MAXN];
int num[MAXN], a[200][10], isAns[1000000 + 10];
vector<int> v[10], ans;int chu(int* S, int a, int len){
int N[MAXN] = {};
for(int i=1; i<=len; i++)
N[i] = S[i];
N[0] = 0;
for(int i=len; i>=1; i--){
while(N[i] < a && i > 1){
N[i-1] += N[i]*10;
N[i] = 0;
i--;
}
N[i-1] += N[i]%a*10;
N[i] /= a;
}
return N[0]/10;
}int main()
{
int n, m;
scanf("%d%d", &n, &m);
for(int i=0; i<=n; i++){
scanf("%s", &s[1]);
int len = strlen(&s[1]);
if(s[1] == '-'){
for(int j=1; j<len; j++)
num[j] = s[len-j+1]-'0';
len--;
for(int j=1; j<=Q; j++)
a[i][j] = -chu(num, q[j], len);}
else{
for(int j=1; j<=len; j++)
num[j] = s[len-j+1]-'0';
for(int j=1; j<=Q; j++)
a[i][j] = chu(num, q[j], len);
}
}
for(int i=1; i<=Q; i++)
for(int j=1; j<=q[i]; j++){
int ans = a[n][i];
for(int u=n-1; u>=0; u--)
ans = ((ans*j)%q[i]+a[u][i])%q[i];
if(ans == 0){
int bri = j;
while(bri <= m){
v[i].push_back(bri);
bri += q[i];
}
}
}
for(int i=1; i<=Q; i++)
for(int j=0; j<v[i].size(); j++)
isAns[v[i][j]]++;
for(int i=1; i<=m; i++)
if(isAns[i] == Q)
ans.push_back(i);
printf("%d\n", ans.size());
for(int i=0; i<ans.size(); i++)
printf("%d\n", ans[i]);
return 0;
}
代码有点乱,让大神见笑了。。用秦九韶算法优化 -
02015-09-25 23:18:29@
P1910解方程
Accepted记录信息
评测状态 Accepted
题目 P1910 解方程
递交时间 2015-09-25 23:17:48
代码语言 C++
评测机 VijosEx
消耗时间 1435 ms
消耗内存 36820 KiB
评测时间 2015-09-25 23:17:51评测结果
编译成功
foo.cpp: In function 'bool check(int)':
foo.cpp:18:13: warning: unused variable 'j' [-Wunused-variable]
int i , j , flag = 0;
^
foo.cpp:18:17: warning: unused variable 'flag' [-Wunused-variable]
int i , j , flag = 0;
^测试数据 #0: Accepted, time = 15 ms, mem = 36816 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 36820 KiB, score = 10
测试数据 #2: Accepted, time = 15 ms, mem = 36816 KiB, score = 10
测试数据 #3: Accepted, time = 0 ms, mem = 36816 KiB, score = 10
测试数据 #4: Accepted, time = 16 ms, mem = 36816 KiB, score = 10
测试数据 #5: Accepted, time = 234 ms, mem = 36820 KiB, score = 10
测试数据 #6: Accepted, time = 234 ms, mem = 36820 KiB, score = 10
测试数据 #7: Accepted, time = 281 ms, mem = 36820 KiB, score = 10
测试数据 #8: Accepted, time = 281 ms, mem = 36816 KiB, score = 10
测试数据 #9: Accepted, time = 359 ms, mem = 36820 KiB, score = 10
Accepted, time = 1435 ms, mem = 36820 KiB, score = 100
代码
#include <iostream>
#include <stdio.h>
#include <queue>using namespace std;
int mod[7 + 2] = { 19 , 101 , 11261 , 19997 , 22877 , 21893 , 14843 };
int n , m , ans[1000000 + 2];
char a[100 + 10][10000 + 10];
int i , j , k;
int power[1000000 + 2];
int ver[7][1000000 + 2];
queue < int > q;
int num;bool check( int x )
{
int i , j , flag = 0;
long long ans = 0;
power[0] = 1;
for( i = 1 ; i <= n ; i++ )
power[i] = power[i - 1] * x % mod[k];
for( i = 0 ; i <= n ; i++ )
{
if( a[i][0] != '-' )
ans += ver[k][i] * power[i];
else
ans -= ver[k][i] * power[i];
ans %= mod[k];
}
while( ans < 0 )
ans += mod[k];
return !( ans % mod[k] );
}int main()
{
scanf( "%d %d" , &n , &m );
for( i = 0 ; i <= n ; i++ )
scanf( "%s" , a[i] );
for( k = 0 ; k < 7 ; k++ )
for( i = 0 ; i <= n ; i++ )
for( j = 0 ; a[i][j] ; j++ )
{
if( a[i][j] == '-' )
continue;
ver[k][i] *= 10;
ver[k][i] += a[i][j] - '0';
ver[k][i] %= mod[k];
}
for( k = 0 ; k < 7 ; k++ )
for( i = 0 ; i < mod[k] && i <= m ; i++ )
if( check( i ) )
for( j = i ; j <= m ; j += mod[k] )
ans[j]++;
for( i = 1 ; i <= m ; i++ )
if( ans[i] == 7 )
{
num++;
q.push( i );
}
printf( "%d\n" , num );
while( !q.empty() )
printf( "%d\n" , q.front() ) , q.pop();
return 0;
} -
02015-03-16 08:06:20@
前面都是C++的代码,我发一个Pascal的代码
const
hash:array[1..10]of int64=
(1007,10007,12347,12349,100017,111647,
19720308,19750920,19981117,20150208);type data=array[1..10]of int64;
procedure readdata(var a:data);
var c:char;
b:boolean;
i:longint;
n:int64;
begin
for i:=1 to 10 do a[i]:=0;
repeat read(c);
until (c>='0')and(c<='9')or(c='-');
if c='-' then
begin
b:=true;
read(c);
end else b:=false;while (c>='0')and(c<='9') do
begin
n:=ord(c)-48;
for i:=1 to 10 do a[i]:=(a[i]*10+n)mod hash[i];
read(c);
end;if b then
for i:=1 to 10 do if a[i]<>0 then a[i]:=hash[i]-a[i];
end;var
a:array[0..100]of data;
list:array[1..1000000]of longint;
n,m,i,j,k,x,top:longint;
ok:array[1..1000000]of boolean;function check2(x:int64;k:longint):boolean;
var i:longint;
sum:int64;
begin
sum:=0;
for i:=n downto 0 do
sum:=(sum*x+a[i][k])mod hash[k];
if sum<>0 then
begin
i:=x;
while i<=m do
begin
ok[i]:=true;
i:=i+hash[k];
end;
end;
exit(sum=0);
end;function check(x:int64):boolean;
var k:longint;
begin
if ok[x] then exit(false);
for k:=1 to 10 do
if check2(x,k)=false then exit(false);
exit(true);
end;begin
readln(n,m);
for i:=0 to n do readdata(a[i]);
for i:=1 to m do
if check(i) then
begin
inc(top);
list[top]:=i;
end;
writeln(top);
for i:=1 to top do writeln(list[i]);end.
-
02015-02-25 11:29:15@
貌似数据不全是noip的,因为noip我的数据全过,但是vijos的7错了
然后我又不想改程序,写程序,然后我就改了一下质数的值
改了其中的一个……
但是还是一样的结果,然后就去看题解,发现有大神说选取的质数要尽量接近,然后我发现我的质数都是挨着的
然后我就想,是不是我选取的质数太接近10的次方了(不是这道题,什么质数不要接近2和10的次方)
然后我就在10000以内的质数表里找出了两个8000多的,然后保留两个9000多的
然后就过去了,总感觉有一种侥幸的感觉
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char a[10005];
int n,m;
int x;
int a1[120],a2[120],a3[120],a4[120],fu;
int x1,x2,x3,x4;
int tx1,tx2,tx3,tx4;
int s1,s2,s3,s4;
int p1 = 9901,p2 = 9907,p3 = 8087,p4 = 8089;
int ans1 = 0,ans[10000002];
int can1[10000],can2[10000],can3[10000],can4[10000];
int main()
{
int i,j,k;
scanf("%d%d",&n,&m);
for (i = 0;i <= n;i++) {
scanf("%s",a);
a1[i] = a2[i] = a3[i] = a4[i] = 0;
if ((a[0] >= '0') && (a[0] <= '9')) {
j = 0;
fu = 1;
} else {
j = 1;
if (a[0] == '-')
fu = -1;
else
fu = 1;
}
for (;a[j];j++) {
a1[i] = (a1[i]*10+a[j]-'0')%p1;
a2[i] = (a2[i]*10+a[j]-'0')%p2;
a3[i] = (a3[i]*10+a[j]-'0')%p3;
a4[i] = (a4[i]*10+a[j]-'0')%p4;
}
a1[i] *= fu; a2[i] *= fu; a3[i] *= fu; a4[i] *= fu;
}if (m <= 10000) {
for (x = 1;x <= m;x++) {
x1 = x%p1; x2 = x%p2; x3 = x%p3; x4 = x%p4;
s1 = s2 = s3 = s4 = 0;
tx1 = tx2 = tx3 = tx4 = 1;
for (i = 0;i <= n;i++) {
s1 = (s1+a1[i]*tx1)%p1;
s2 = (s2+a2[i]*tx2)%p2;
s3 = (s3+a3[i]*tx3)%p3;
s4 = (s4+a4[i]*tx4)%p4;
tx1 = (tx1*x1)%p1;
tx2 = (tx2*x2)%p2;
tx3 = (tx3*x3)%p3;
tx4 = (tx4*x4)%p4;
}
if ((0 == s1) && (0 == s2) && (0 == s3) && (0 == s4))
ans[ans1++] = x;
}
printf("%d\n",ans1);
for (i = 0;i < ans1;i++)
printf("%d\n",ans[i]);
} else {
memset(can1,0,sizeof(can1));
for (x = 0;x < p1;x++) {
x1 = x; s1 = 0; tx1 = 1;
for (i = 0;i <= n;i++) {
s1 = (s1+a1[i]*tx1)%p1;
tx1 = (tx1*x1)%p1;
}
if (0 == s1)
can1[x] = 1;
}memset(can2,0,sizeof(can2));
for (x = 0;x < p2;x++) {
x2 = x; s2 = 0; tx2 = 1;
for (i = 0;i <= n;i++) {
s2 = (s2+a2[i]*tx2)%p2;
tx2 = (tx2*x2)%p2;
}
if (0 == s2)
can2[x] = 1;
}memset(can3,0,sizeof(can3));
for (x = 0;x < p3;x++) {
x3 = x; s3 = 0; tx3 = 1;
for (i = 0;i <= n;i++) {
s3 = (s3+a3[i]*tx3)%p3;
tx3 = (tx3*x3)%p3;
}
if (0 == s3)
can3[x] = 1;
}memset(can4,0,sizeof(can4));
for (x = 0;x < p4;x++) {
x4 = x; s4 = 0; tx4 = 1;
for (i = 0;i <= n;i++) {
s4 = (s4+a4[i]*tx4)%p4;
tx4 = (tx4*x4)%p4;
}
if (0 == s4)
can4[x] = 1;
}for (x = 1,ans1 = 0;x <= m;x++) {
if ((can1[x%p1]) && (can2[x%p2]) &&
(can3[x%p3]) && (can4[x%p4]))
ans[ans1++] = x;
}
printf("%d\n",ans1);
for (i = 0;i < ans1;i++)
printf("%d\n",ans[i]);
}
return 0;
} -
02014-11-26 13:39:03@
#include <bits/stdc++.h>
using namespace std;
//
const long long MOD[5]={10007,11261,14843,19997,21893};
string a_i[100+5];
long long a[5][100+5];
long long f[5][25000+5];
bool sign[10000000+5];
char t[1000000+5];
int N,M;
vector<int> l;
int tot=0;
//
inline long long change(const string& x,int pos)
{
long long ans=0;
int len=x.size();
if(x[0]=='-')
{
for(int i=1;i<len;++i)
{
ans=ans*10+x[i]-'0';
ans%=MOD[pos];
}
return -ans;
}
else
{
for(int i=0;i<len;++i)
{
ans=ans*10+x[i]-'0';
ans%=MOD[pos];
}
return ans;
}
}
//
int main()
{
cin>>N>>M;
for(int i=0;i<=N;++i)
{
memset(t,0,sizeof(t));
scanf("%s",t);
string p(t);
a_i[i]=t;
//
a[0][i]=change(a_i[i],0);
a[1][i]=change(a_i[i],1);
a[2][i]=change(a_i[i],2);
a[3][i]=change(a_i[i],3);
a[4][i]=change(a_i[i],4);
//
}
for(int x=0;x!=5;++x)
{
for(int i=1;i<=MOD[x];++i)
{
long long ans=0;
for(int p=N;p>=0;--p)
{
ans=ans*i+a[x][p];
ans%=MOD[x];
}
f[x][i]=ans;
}
}
for(int x=0;x!=5;++x)
{
for(int i=1;i<=M;++i)
{
int now=i%MOD[x];
if(f[x][now]!=0) sign[i]=1;
}
}
for(int i=1;i<=M;++i)
if(sign[i]==0)
{
tot++;
l.push_back(i);
}
cout<<tot<<endl;
for(int i=0;i!=l.size();++i)
cout<<l[i]<<endl;
return 0;
} -
-12016-11-07 21:21:06@
测试数据 #0: Accepted, time = 0 ms, mem = 2028 KiB, score = 10
测试数据 #1: Accepted, time = 0 ms, mem = 2036 KiB, score = 10
测试数据 #2: Accepted, time = 0 ms, mem = 2032 KiB, score = 10
测试数据 #3: Accepted, time = 31 ms, mem = 2024 KiB, score = 10
测试数据 #4: Accepted, time = 15 ms, mem = 2028 KiB, score = 10
测试数据 #5: Accepted, time = 62 ms, mem = 2032 KiB, score = 10
测试数据 #6: Accepted, time = 62 ms, mem
- 1
信息
- ID
- 1910
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 2960
- 已通过
- 509
- 通过率
- 17%
- 被复制
- 7
- 上传者