倒计时37天

23春季选拔开学测补题:

1.题目大致就是给t个n,求n!然后对123456789取模,主要是n的范围比较大,到1e11,当时用数组求得来着,数组开到1e5,之后就不行了,12/25还是12/20,,反正肯定后面段错误,其实有一个点:

cpp 复制代码
#include <bits/stdc++.h>
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)

cpp 复制代码
//主要还是理解题意,,,
#include <bits/stdc++.h>
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<<s;
}

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,笨蛋,,,题目都看不懂啊啊啊啊啊、、

cpp 复制代码
//用string直接写也可以,这个是dfs的,,老子就不信了,,,每天默念三遍,,不要浮躁,不要浮躁,不要浮躁,,
#include <bits/stdc++.h>
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<<sum1<<' '<<sum2;
}

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...

相关推荐
喜欢吃燃面35 分钟前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso39 分钟前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
困鲲鲲39 分钟前
CPP多线程2:多线程竞争与死锁问题
c++·多线程·死锁
快乐的划水a9 小时前
组合模式及优化
c++·设计模式·组合模式
星星火柴93611 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑11 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
阿巴~阿巴~14 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
旺小仔.15 小时前
双指针和codetop复习
数据结构·c++·算法
jingfeng51415 小时前
C++ STL-string类底层实现
前端·c++·算法
郝学胜-神的一滴15 小时前
基于C++的词法分析器:使用正则表达式的实现
开发语言·c++·程序人生·正则表达式·stl