A:
解题思路:
输出整体可以分成两部分:
第一部分循环3*n次,第一部分又可以分成三个部分,分别是'*','.','*',分别循环n,2 * n,n次
第二部分循环n次,又可以分成五个部分,'.','*','.','*','.',循环i,n(n - i) * 2,n,i次
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n;cin >> n;for(int i = 1;i <= 3 * n;i++){for(int j = 1;j <= n;j++){cout << '*';}for(int j = 1;j <= 2 * n;j++){cout << '.';}for(int j = 1;j <= n;j++){cout << '*';}cout << endl;}for(int i = 1;i <= n;i++){for(int j = 1;j <= i;j++){cout << '.';}for(int j = 1;j <= n;j++){cout << '*';}for(int j = 1;j <= 2 * (n - i);j++){cout << '.';}for(int j = 1;j <= n;j++){cout << '*';}for(int j = 1;j <= i;j++){cout << '.';}cout << endl;}return 0;
}
B:
解题思路:嗯........n为3的时候直径为1,其他都是2,复杂度o(1)
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n;cin >> n;if(n == 3){cout << 1;}else{cout << 2;}return 0;
}
C:
解题思路:
这题没什么好说的,就按照题目模拟就行,前k项小写变大写,剩下的大写变小写
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int n,k;string s;cin >> n >> k;cin >> s;for(int i = 0;i < k;i++){if(s[i] >= 'a' && s[i] <= 'z'){s[i] = s[i] - 32;}}for(int i = k;i < n;i++){if(s[i] >= 'A' && s[i] <= 'Z'){s[i] = s[i] + 32;}}for(int i = 0;i < n;i++){cout << s[i];}return 0;
}
D:
解题思路:
这道题不知道循环的次数,那就定义个while死循环,里面做判断,如果施肥间隔天数等于2时,成长值加上浇水和施肥的成长值,间隔天数变为0,天数自增1,如果成长值大于等于z,就结束循环;如果施肥间隔天数不为2,那么成长值就加上浇水成长值,间隔自增1,天数自增1,如果成长值大于等于z,就结束循环;最后输出领导免费水果的天数。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int x,y,z,num = 0,index = 2,day = 0;;cin >> x >> y >> z;while(1){if(index == 2){num += x + y;index = 0;day++;if(num >= z){cout << day;break;}}else{num += x;index++;day++;if(num >= z){cout << day;break;}}}return 0;
}
E:
解题思路;
这道题可以分成两部分计算
第一部分是按顺序正好遍历完s字符串,如果能截取t,就++。
第二部分是形成闭环,也就是i >= s.length() - (t.length() - 1)时,遍历次数为t.length(),
如果j == s.length(),j就赋值为0,形成闭环,依次判断s[j]和t[stop](stop是t字符串的索引)是否相等,如果不相等就跳出循环,否则就视为可以截取字符串t。
下面是c++代码:
#include<iostream>
using namespace std;
int main()
{int index = 1,num = 0;string s,t;cin >> s >> t;for(int i = 0;i < s.length();i++){index = 1;if(i >= s.length() - (t.length() - 1)){for(int j = i,stop = 0;stop < t.length();j++,stop++){if(j == s.length()){j = 0;}if(s[j] != t[stop]){index = 0;break;}}if(index == 1){num++;}}else{for(int j = 0;j < t.length();j++){if(s[i + j] != t[j]){index = 0;break;}}if(index == 1){num++;}}}cout << num;return 0;
}