思路:
一次最多只能走一步或者两步,只需要判断后面两个是不是都是*就行
#include<bits/stdc++.h>
using namespace std;
char a[1010];
int main()
{
int t;
cin >> t;
while (t--)
{
int n, flag=0;
int ans = 0;
cin >> n;
for (int i = 0; i <= n; i++)
{
a[i] = 's';
}
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i++)
{
if (a[i] == '@')
{
ans++;
}
if (a[i] == '*' && a[i + 1] == '*' ||a[i]=='s')
{
cout << ans << endl;
flag = 1;
break;
}
}
if(flag==0)
cout << ans << endl;
}
return 0;
}
思路:
加上每两个时间之间的间隔
代码:
#include<bits/stdc++.h>
using namespace std;
int a[1000010];
int b[1000010];
int main()
{
int t;
cin >> t;
while (t--)
{
int n, ans = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i++)
{
ans += a[i] - ans % a[i];
}
cout << ans << endl;
}
return 0;
}
思路:
将每次的字符串进行比对得到最小的(反转后添加的字符串和当前的字符串)
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
string s;
cin >> s;
s = min(s,string(s.rbegin(),s.rend())+s);
cout << s << endl;
}
return 0;
}