QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#352235 | #8340. 3 Sum | 111445# | AC ✓ | 389ms | 4096kb | C++23 | 2.1kb | 2024-03-13 01:28:09 | 2024-10-13 18:49:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 500
#define B 3
int i,j,k,n,m,t;
const int M[21]={0,939235109,918177479,904775747,937509259,918480809,923802487,985385173,934431193,939365087,982767361,946533319,946423267,935536951,923956589,965647681,937270427,929863763,938269097,940115587,917694059};
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
const ll mask = rng();
ll shift(ll x) {
x ^= mask;
x ^= x << 13;
x ^= x >> 7;
x ^= x << 17;
x ^= mask;
return x;
}
struct SB{
int w[B+1],i;
void rd(string s){
for(i=1;i<=B;i++){
ll _w=0; int _M=M[i];
for(auto c:s){
_w=(_w*10+c-'0')%_M;
}
w[i]=_w;
}
}
ll get(){
ll res=0;
for(i=1;i<=B;i++)res=(shift(res)+w[i]);
return res;
}
}f[1005],f1;
int res=0;
ll w0,w1,w2,sb;
string s,ss;
string fuck(string s){
if(s=="0")return s;
int i,j,k,sz,n1,cur=0,it=m-1;
static int f[20005];
memset(f,0,m*4+50);
string ans;
while(s.size()>m){
k=s.size();
string s1=s.substr(k-m);
s.erase(k-m);
reverse(s1.begin(),s1.end());
//cout<<"CNMNMSL "<<s<<' '<<s1<<endl;
for(i=0;i<m;i++){
f[i]+=s1[i]-'0';
}
}
//cout<<"CNMNMSL "<<s<<endl;
reverse(s.begin(),s.end());
n1=s.size();
for(i=0;i<n1;i++){
f[i]+=s[i]-'0';
}
while(it>=0&&!f[it])it--;
if(it<0)return "0";
for(i=0;;i++){
if(i<=it)cur+=f[i];
//cout<<"NMSL "<<i<<' '<<f[i]<<' '<<cur<<endl;
if(i>it&&!cur)break;
ans+=char(cur%10+'0'); cur/=10;
}
reverse(ans.begin(),ans.end());
//cout<<"nmsl "<<ans<<endl;
return ans;
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
ss=string(m,'9');
for(i=1;i<=n;i++){
cin>>s;
while(s.size()>m)s=fuck(s);
if(s==ss)s="0";
//cout<<"nmsl "<<s<<endl;
f[i].rd(s);
}
w0=f1.get();
f1.rd(ss); w1=f1.get();
for(i=1;i<=B;i++){
f1.w[i]=(f1.w[i]+f1.w[i])%M[i];
}
w2=f1.get();
for(i=1;i<=n;i++)for(j=i;j<=n;j++)for(k=j;k<=n;k++){
for(t=1;t<=B;t++){
f1.w[t]=(0ll+f[i].w[t]+f[j].w[t]+f[k].w[t])%M[t];
}
sb=f1.get();
if(sb==w0||sb==w1||sb==w2)res++;
}
cout<<res;
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3632kb
input:
4 1 0 1 10 17
output:
3
result:
ok 1 number(s): "3"
Test #2:
score: 0
Accepted
time: 197ms
memory: 3652kb
input:
500 859 7118711592236878297922359501613604144948355616986970837340677671376753603836852811886591300370143151943368529129749813118476151865844255212534355441611481420938483178075143062691345257288242460282715389758789648541099090735875617822348551942134616963557723055980260082230902505269975518146286...
output:
0
result:
ok 1 number(s): "0"
Test #3:
score: 0
Accepted
time: 389ms
memory: 4096kb
input:
500 17336 11871159223687829792235950161360414494835561698697083734067767137675360383685281188659130037014315194336852912974981311847615186584425521253435544161148142093848317807514306269134525728824246028271538975878964854109909073587561782234855194213461696355772305598026008223090250526997551814628...
output:
0
result:
ok 1 number(s): "0"
Test #4:
score: 0
Accepted
time: 244ms
memory: 3688kb
input:
500 1 751324443898124078584847834484321089092662321556147445230263526014359393841194947303407593948729802551881289193716611867931891257925091769456350249725997883453296895094445731130479434019358742162771547784250401546380268386074363779242500860317042151185119666027858022664683818314351285215150806...
output:
2327631
result:
ok 1 number(s): "2327631"
Test #5:
score: 0
Accepted
time: 228ms
memory: 3756kb
input:
500 2 408542968136435277974575411503179002415404345446801430469044749372949272333801248935236224652806667129749035002588943020176263162139056819871274824302889304493205266143688886696157147111754418731401856424401766968832165255416237731963027205324149660112574729610391396555581935236134531799950318...
output:
212002
result:
ok 1 number(s): "212002"
Test #6:
score: 0
Accepted
time: 318ms
memory: 3776kb
input:
500 11500 75411775796562109942642493394321873284995260953010112281856775261847503626737348402159485133662757032091519863427156582689971229143089317472838196453888261138079171290535429921921548971897026706656838415620603757605079012541561774699628665865662183868374645956694140356716037674688084770628...
output:
7675
result:
ok 1 number(s): "7675"
Test #7:
score: 0
Accepted
time: 326ms
memory: 3768kb
input:
500 11500 85355036663164764459816544518601485185320972076300982726542821424439713703229669576802138231401047471351087455159512255765325323540671792953715169122669767368905391325060775725733157611188832204902997772518104188947349204726490597030311894441123834099315122116302203972018409854605418988681...
output:
1070
result:
ok 1 number(s): "1070"
Test #8:
score: 0
Accepted
time: 1ms
memory: 3704kb
input:
1 11500 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999...
output:
1
result:
ok 1 number(s): "1"
Extra Test:
score: 0
Extra Test Passed