第一次和别的学校的打比赛,虽然不是正规比赛,但是还是有许多感想的:
距离上次比赛已经快一个星期了,但还有题目并没有完全搞懂,可能还是自己还是没有其他大学的大佬那么牛吧,亦或是自己还不够努力。
虽然自己也才刚接触不久编程,但是天赋还是不及他人;我们虽然处在一个二本大学,acm集训队里的同学之前也大多没有接触过编程,更别说参加比赛了,但毕竟我们也是学校里最适合培养的人了,我们就是最优人选(毕竟是通过选拔进来的),所有要想在之后的赛事中有所突破,只有通过后期努力,不断的刷题来获得。
先说说这次比赛遇见的大神吧:九峰。
他是本次赛事中唯一ak所有题目的男人。来自浙江财经大学,一个财经类院校。虽然不知道他是不是大一学生,但至少我可以看懂他的代码,他的代码极具个人特色,通过看他的代码,我可以学习到很多东西,这个是他代码:
#include <bits/stdc++.h>
using namespace std;
#define PB push_back
#define LL long long
#define PII pair<int,int>
#define FI first
#define SE second
#define endl '\n'
const double pi=acos(-1.0);
const int N=1e6+10,M=1e6+10,mod=1e9+7,INF=0x3f3f3f3f;
int n,p;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int s[2020][2020];
void solve(){
cin>>n>>p;
int ans=0;
while(n>=p){
ans+=n/p;
n/=p;
}
cout<<ans<<'\n';
}
int main()
{
int t=1;
cin>>t;
while(t--){
solve();
}
return 0;
}
/*
*/
在里面虽然有很多c++的东西,但还是可以读懂的:
1.#include<bits/stdc++.h>
这个是万能头文件,可以帮助减少很多头文件的使用空间。具体看:
https://blog.csdn.net/weixin_43202635/article/details/107498312
2.#define 宏定义的使用。
这是他代码具有特色的原因之一,也是一个人他自己所能读懂自己代码,使自己代码具有特色的工具。
通过合理,以及经常性的使用,可以有效加快写代码的速度。
3. 格式:
void solve()
{
}
int main()
{
int t;
cin>>t;
while(t–){
solve();
}
return 0;
}
比如:
#include<bits/stdc++.h>
using namespace std;
void solve()
{
int n,p,count,k;
cin>>n>>p;
for(int i=p;i<=n;i+=p){//优化算法,使之运算时间更短。
k = i;
while(k%p == 0){
count++;
k /= p;
}
}
cout<<count<<endl;
}
void solve1()
{
int n,p,ans;
cin>>n>>p;
while(n>=p){
ans+=n/p;
n/=p;
}
cout<<ans<<endl;
}
int main()
{
int t;
cin>>t;
while(t--){
solve1();
}
return 0;
}
这个是我通过模仿他写的代码。
在这个代码中,我们可以通过改变函数解题来实现许多平时不能完成的小任务,比如,如果你敲完代码后发现自己的思路错了,可以不用急着删除代码,可以通过再次制造函数来解题,只要主函数中引用函数改变一下就好了;这样的好处在于你可以回过去看你错的代码,检查出你的错误,从而进一步改进。
这样写的好处还有一点在于,你在解题后,如果有多个思路,可以多制造几个函数来实现几个思路(比如我这个),也不用多建立一个文件和写注释标明,引用时也可以方便许多。
这个格式的代码好处会有许多意想不到的作用,还待发现。
4.c++的方便性。cin>>和cout<<比printf和scanf在输入比较少的数据时要方便许多。
。。。。。。。。
还有许多的好代码还待开掘。
我们学校也有许多有天赋又努力的同学,比如hqh,zzy等,将来还要多多与他们学习,(听我们辅导员和我说他们都是很努力的同学,平时都是在敲代码)。
这就是我在这次牛客网比赛的全部感想,总之,路还很长,少年仍需努力!
————————————————————————2020.12.12