训练情况
赛后反思
今年比赛比去年有意思多了,太搞笑了
A题
我们构造一对就可以了,和为 \(x\),直接扔上去 \(1\) 和 \(x-1\) 即可
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){int x; cin>>x;cout<<1<<endl;cout<<1<<" "<<x-1<<endl;
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
B题
好抽象的题,SHA-256加密后奇偶性和输出一样,我随便输了个 1,一看还对上了,就直接交了
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){cout<<"1";
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
D题
这题能hack掉的点在于map<int,int>,里面sum可能会超过int,所以我们int溢出刚好为零的情况,4294967296
这个数刚好溢出为 0
,我们直接让sum出现溢出为 0
的情况即可 WA 了
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};void solve(){map<int,int> v;for(int i = 0;i<34;i++) v[a[i]] = 1;cout<<49<<endl;for(int i = 1;i<=49;i++){if(v[i]){cout<<6<<endl;cout<<(int)1e9<<" ";cout<<(int)1e9<<" ";cout<<(int)1e9<<" ";cout<<(int)1e9<<" ";cout<<(int)294967296<<" ";cout<<0<<" ";cout<<endl;} else {cout<<1<<endl;cout<<1<<endl;}}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
E题
太经典了,数组开小了,我们直接数据压满查询即可爆 RE
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};void solve(){map<int,int> v;for(int i = 0;i<34;i++) v[a[i]] = 1;cout<<49<<endl;for(int i = 1;i<=49;i++){if(v[i]){cout<<2e4<<" "<<1<<" "<<2e4<<endl;for(int j = 1;j<=2e4;j++) cout<<1<<" ";cout<<endl;} else {cout<<1<<" "<<1<<" "<<1<<endl;cout<<1<<endl;}}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
F题
好一个暴力求和,我们直接数据压满就超时了
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;int a[10000] = {2,3,5,6,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,39,40,46};void solve(){map<int,int> v;for(int i = 0;i<34;i++) v[a[i]] = 1;cout<<49<<endl;for(int i = 1;i<=49;i++){if(v[i]){cout<<1e4<<" "<<1e4<<endl;for(int j = 1;j<=1e4;j++) cout<<1<<" ";cout<<endl;for(int j = 1;j<=1e4;j++) cout<<1<<" "<<1e4<<endl;cout<<endl;} else {cout<<1<<" "<<1<<endl;cout<<1<<endl;cout<<1<<" "<<1<<endl;}}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
G题
盲猜了一个这题加密用了hash,由于秘钥范围有限,直接枚举ka和kb,去找能和答案匹配的,我们发现 ka = 5,kb = 6的时候能对上,直接hash输出就行
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){string s; cin>>s;int ka = 5;int kb = 6;for(int i = 0;i<s.size();i++){if(s[i] >= 'a' && s[i] <= 'z'){cout<<(char)(((s[i]-'a')*ka+kb)%26+'a');} else {cout<<(char)(((s[i]-'A')*ka+kb)%26+'A');}}
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
H题
翻阅日历可知,2027情人节是周日
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){cout<<"2027";
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}
K题
题目暗示了低头看键盘,我们直接面向样例编程,我们发现给出的字母答案就是它周围的字母,我们直接大力分类讨论即可
点击查看代码
#include <bits/stdc++.h>
// #define int long long
#define endl '\n'using namespace std;void solve(){string s; cin>>s;if(s == "A") cout<<"QWSZ";else if(s == "B") cout<<"VGHN";else if(s == "C") cout<<"XDFV";else if(s == "D") cout<<"REFSXC";else if(s == "E") cout<<"WSDR";else if(s == "F") cout<<"RTDGCV";else if(s == "G") cout<<"TYFHVB";else if(s == "H") cout<<"YUGJBN";else if(s == "I") cout<<"UJKO";else if(s == "J") cout<<"UIHKNM";else if(s == "K") cout<<"IOJLM";else if(s == "L") cout<<"POK";else if(s == "M") cout<<"NJK";else if(s == "N") cout<<"BHJM";else if(s == "O") cout<<"IKLP";else if(s == "P") cout<<"OL";else if(s == "Q") cout<<"WA";else if(s == "R") cout<<"EDFT";else if(s == "S") cout<<"WEADZX";else if(s == "T") cout<<"RFGY";else if(s == "U") cout<<"YHJI";else if(s == "V") cout<<"CFGB";else if(s == "W") cout<<"QASE";else if(s == "X") cout<<"ZSDC";else if(s == "Y") cout<<"TGHU";else if(s == "Z") cout<<"ASX";
}signed main(){// int T; cin>>T; while(T--)solve();return 0;
}