23春季选拔开学测补题:
1.题目大致就是给t个n,求n!然后对123456789取模,主要是n的范围比较大,到1e11,当时用数组求得来着,数组开到1e5,之后就不行了,12/25还是12/20,,反正肯定后面段错误,其实有一个点:
- #include
- using namespace std;
- #define int long long
- const int N = 2e5 + 6;
- const int inf = 0x3f3f3f3f;
- const int mod = 123456789;
-
- int counting(int x) {
- int result = 1;
- for (int i = 1; i <= x; i++) {
- result = result * i % mod;
- }
- return result;
- }
-
- void solve() {
- for (int i = 0; i <= 4000; i++) {
- //cout << counting(i) << endl;
- if (counting(i) == 0) {
- cout << i;
- break;
- }
- }
- }
-
- signed main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr), cout.tie(nullptr);
- int t = 1;
- //cin>>t;
- while (t--) {
- solve();
- }
- return 0;
- }
所以到3803之后就都是0了,,,
2.L1-094 剪切粘贴 - 团体程序设计天梯赛-练习集 (pintia.cn)
- //主要还是理解题意,,,
- #include
- using namespace std;
- #define int long long
- const int N = 2e5 + 6;
- const int inf = 0x3f3f3f3f;
- const int mod = 123456789;
- void solve()
- {
- int n;
- string s;
- cin>>s>>n;
- while(n--)
- {
- int st,en;
- string s1,s2;
- cin>>st>>en>>s1>>s2;
- string str=s.substr(st-1,en-st+1);//是剪切,,T T
- s.erase(st-1,en-st+1);
- string ss=s1+s2;
- int pos=s.find(ss);
- if(pos!=-1)s.insert(pos+s1.size(),str);
- else s+=str;
- }
- cout<
- }
-
- signed main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr), cout.tie(nullptr);
- int t = 1;
- //cin>>t;
- while (t--) {
- solve();
- }
- return 0;
- }
L2-048 寻宝图 - 团体程序设计天梯赛-练习集 (pintia.cn)
主要就是n,m都到1e5了来着,头来想用二维数组,然后【二维数组最大到1e4】,然后就想用string来着,但不知道哪里错了,,陷入沉思,当时怎么写的来着(・∀・(・∀・(・∀・*)...
想起来了,,,按题意主要是求连通的岛屿个数,但当时的理解就是一个岛屿四周都必须是水才是岛屿,,题目挺简单,主要是理解题意T T,笨蛋,,,题目都看不懂啊啊啊啊啊、、
- //用string直接写也可以,这个是dfs的,,老子就不信了,,,每天默念三遍,,不要浮躁,不要浮躁,不要浮躁,,
- #include
- using namespace std;
- #define int long long
- const int N = 2e5 + 6;
- const int inf = 0x3f3f3f3f;
- const int mod = 123456789;
- vector<int>ve1[N],ve2[N];
- int n,m,sum1=0,sum2=0;
- int flag=0;
- int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
- void dfs(int x,int y)
- {
- ve2[x][y]=1;
- if(ve1[x][y]>1)flag=1;
- for(int i=0;i<4;i++)
- {
- int xx=x+dir[i][0],yy=y+dir[i][1];
- if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&ve1[xx][yy]&&!ve2[xx][yy])
- {
- if(ve2[xx][yy]>1)flag=1;
- dfs(xx,yy);
- }
- }
- }
- void solve()
- {
- cin>>n>>m;
- for(int i=1;i<=n;i++)
- {
- ve1[i].push_back(0);
- ve2[i].push_back(0);
- for(int j=1;j<=m;j++)
- {
- char a;//不能是int型,要一个一个输入
- cin>>a;
- ve1[i].push_back(a-'0');
- ve2[i].push_back(0);
- }
- }
- for(int i=1;i<=n;i++)
- {
- for(int j=1;j<=m;j++)
- {
- if(ve1[i][j]&&!ve2[i][j])
- {
- flag=0;
- sum1++;
- dfs(i,j);
- if(flag)sum2++;
- }
- }
- }
- cout<
' '< - }
-
- signed main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr), cout.tie(nullptr);
- int t = 1;
- //cin>>t;
- while (t--) {
- solve();
- }
- return 0;
- }
待续,,题目名忘了T T...
-
相关阅读:
【面试复习】Python基础复习
Apache HTTPD 多后缀解析漏洞复现
用户登录错误次数太多锁定账号
【SLAM】4李群&李代数
Windows AD域报表
算法:轮转数组---循环取模运算
MATLAB中的矩阵的重构和重新排列
数据库约束
Linux 内核启动分析
记录下跑VUE+webpack-dev-server安装使用的问题
-
原文地址:https://blog.csdn.net/fkuelntxgt/article/details/136423692