acwing3955.统一大小写:自己写字符串s[i]时没有想到s[i]!='\0',字符串遇到\0就停止了,而不是平时所写的i<一个范围
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int l1=0,l2=0;
char s[105];
cin>>s;
int i;
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
l1++;
if(s[i]>='a'&&s[i]<='z')
l2++;
}
if(l1>l2)
{
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='a'&&s[i]<='z')
s[i]=s[i]-32;
cout<<s[i];
}
}
else
{
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='A'&&s[i]<='Z')
s[i]=s[i]+32;
cout<<s[i];
}
}
cout<<endl;
}
return 0;
}
acwing3956.截断数组:总和是三的倍数一定可以均分成三组
切第一刀的条件是第一组的总和是三组总和的1/3
切第二刀的条件是第一、二组的总和是三组总和的2/3;
#include <iostream>
using namespace std;
const int N=100005;
int s[N];
int a[N];
int main()
{
int n;
long long count = 0;
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>a[i];
s[i] = s[i-1] + a[i];
}
if(s[n] % 3)
{
cout<<count;
}
else
{
for(int i = 3, cnt = 0; i <= n; i ++)
{
if(s[i - 2] == s[n] / 3)
{
cnt ++;
}
if(s[n] - s[i - 1] == s[n] / 3)
{
count += cnt;
}
}
cout<<count<<endl;
}
return 0;
}