Problem - A - Codeforces
思路:
一次最多只能走一步或者两步,只需要判断后面两个是不是都是*就行
#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;
}
Problem - B - Codeforces
思路:
加上每两个时间之间的间隔
代码:
#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;
}
Problem - A - Codeforces
思路:
将每次的字符串进行比对得到最小的(反转后添加的字符串和当前的字符串)
代码:
#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;
}