B
错误做法:只通过了部分样例,未通过全部。
正确做法:
如果整数是9的倍数,数位和相加为9的倍数,切前缀留后缀,故设置一个字符串,从前面位数进行相加,计算。
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
int ans=0;
int sum=0;
for(int i=0;i<s.size();i++)
{
sum=(sum+(s[i]-'0'))%9; //s[i]-'0'意思是把s[i]转换成整数
ans+=(sum==0); //这句话的意思是如果sum==0会返回1
//否则返回0
}
cout<<ans<<endl;
return 0;
}
C
错误做法:
只写出了一种样例的做法,别的情况当时没有想出做法。
正确做法:
思路:题目中有k=n/2,故可以设置两个字符串,然后aabbcc重复输入除了对的个数不会有回文串,并且def的重复也不会有回文串,就可以做k个回文串后的填充,用j=(j+i)%3来进行重复字符串解决问题。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
string a="abc",b="def";
string s;
for(int i=0,j=0;i<k;i++)
{
s+=a[j];
s+=a[j];
j=(j+1)%3;
}
int j=0;
while(s.size()<n)
{
s+=b[j];
j=(j+1)%3;
}
cout<<s;
return 0;
}