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;
}