3955:统一大小写
解题思路:先做一次遍历,计算出一个单词中大写字母与小写字母的个数,之后再做一次遍历,如果大写字母个数大于小写字母个数,就把每个小写字母-32变成大写字母,如果大写字母个数小于等于小写字母个数,就把每个大写字母+32变成小写字母。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int mi=0,ma=0;
char str1[100]={0};
scanf("%s",&str1);
for(int i=0;i<=100;i++)
{
if(str1[i]>='a'&&str1[i]<='z')
mi++;
if(str1[i]>='A'&&str1[i]<='Z')
ma++;
}
if(ma>mi)
for(int i=0;i<100;i++)
{
if(str1[i]>='a'&&str1[i]<='z')
str1[i]=str1[i]-32;
}
else
for(int i=0;i<=100;i++)
{
if(str1[i]>='A'&&str1[i]<='Z')
str1[i]=str1[i]+32;
}
printf("%s\n",str1);
}
return 0;
}
作者:青云崽
链接:https://www.acwing.com/activity/content/code/content/1767903/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3956:截断数组
解题思路:一个数组从中间截断,得到三个非空子数组,要求三个子数组各元素之和都相等,如果满足要求,那么子数组各元素之和一定等于数组全部元素之和的三分之一.这个相当于把一个数组切割分成三段。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int sum=0,cnt=0;
int num[100001];
int t;
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>num[i];
num[i]+=num[i-1];
}
if(num[t]%3!=0)
sum=0;
else
for(int i=3;i<=t;i++)
{
if(num[i-2]==num[t]/3)
cnt++;
if(num[t]-num[i-1]==num[t]/3)
sum+=cnt;
}
cout<<sum<<endl;
return 0;
}
解题思路: