先叠个甲:我也是个入,可能会有错,还请指出。
第一题,用一个变量,三个if判断就行。
if(n<10)cout<<"at home";
else if(n<20)cout<<"go walk";
else cout<<"play baskball";
第二题,判断1到n有几个完全平方数。
用sqrt函数开平方,1-sqrt(n)里的整数的平方都是完全平方数并且小于等于n,所以直接cout<<n;就行。
注意要用long long。
sqrt就是开这个数的平方。
cout<<sqrt(n);
第三题,输出n每位数与它相邻的数的绝对值的和。
绝对值的定义是一个数在数轴上距离原点的距离。
数轴和原点你不懂的。懂这两个的几乎都懂绝对值。不懂的老师也马上就要教到了。
例如:1234
1-2的绝对值为1,2-3的绝对值为1,3-4的绝对值为1
1+1+1=3
这道题的数据范围为10^1000,所以要用string数组存。存完了直接减就行。当然你也可以给他都-‘0’。不过没必要。
for(int i=0;i<s.size-1;i++)cnt+=abs(a[i]-a[i+1]);
第四题,从左上角出发,每次走一格,只能走右或者下。一共有多少种路线能够通往右下角。
有m个障碍,障碍不能通过。
看到这道题,你第一时间想到的是不是用深搜做?思路对了,但时间会超时。
这道题要用递归。能走到这个格子的数量=所有【能走到(能走到这个格子)的格子】的数量相加。
因为这道题只能走下面和右边,所以(能走到这个格子)的格子分别是这个格子的上面和左边。
所以能走到这个格子的数量=能走到【(这个格子)上面的格子】的数量+能走到【(这个格子)左边的格子】的数量。
能走到起始点的数量为一。
注:这道题很大,要注意%1000035,且这道题的大小为n*n。
然后就可以还是递归了。
int 自己命名(int x,int y){
if(x<1||y<1||x1&&y1)return 1;
//上面写的是x==1&&
//y==1,也不知道为啥出来的是x1&&y1。ac君你给我出来!!!
return (函数名(x-1,y)+函数名(x,y-1))%1000035;
}
递推也行。
a[1][0]=1;
//因为a[1][1]要等于一,a[1][1]进循环会被赋值,就让他在循环里赋值。
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=(a[i][j-1]+a[i-1][j])%1000035;
}
}
最后都要cout<<a[n][n];
那么广东省白名单赛事决赛比赛题解就讲完了。感谢你的观看,我们下期再见,baybay!
实在不知道写什么结尾了,就写了这个。点个赞吧。