A - Count Down
题目大意:降序打印所有非负且小于等于N的数字
解题思路:设置一个变量将他自减并打印出来即可
AC代码:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int main()
{
cin >> n;
for(int i = n; i >= 0; i --)
{
cout << i << endl;
}
return 0;
}
B - Sandwich Number
题目大意:输入一个字符串s判断s是否符合以下三个条件?
1.以大写字母开头
2.还没到中间包含一个六位数的数字x。其大小在
3.以大写字母结束
解题思路:由题意已知该字符串只能为8位大小,因为要满足首位2个大写字母,中间为6位大小满足100000--999999的数字.然后再从首个和最后一个字符以此用该条件判断。
AC代码:
#include <iostream>
using namespace std;
int main()
{
string S;
cin >> S;
if (S.length() != 8)
{
cout << "No";
return 0;
}
if (S[1] <= '0' || S[1] > '9')
{
cout << "No";
return 0;
}
if (S[0] < 'A' || S[0] > 'Z' || S[S.length() - 1] < 'A' || S[S.length() - 1] > 'Z')
{
cout << "No";
return 0;
}
for (int i = 2; i < 7; i++)
{
if (S[i] < '0' || S[i] > '9')
{
cout << "No";
return 0;
}
}
cout << "Yes";
return 0;
}
C - Circular Playlist
题目大意:有一个播放器里面一共有n首歌。给定每一首歌的长度,每首歌的播放是互斥的并且一首播完立即播下一首。那么在一个给定的T时间之后,播放到哪一首歌了?这首歌已经播放了几秒?
解题思路:首先知道该题用的是前缀和,将每个位置上的前缀和算出,然后T总和取余,找出取余后的秒数落在哪一首歌里面,再用取余后的秒数减去该首歌之前的前缀和,因为是从这首歌算开始了多少时间。
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 100010;
LL a[N], s[N];
LL n, t;
int main()
{
cin >> n >> t;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
s[i] = s[i - 1] + a[i];
}
t = t % s[n];
for(int i = 1; i <= n; i ++)
{
if(t < s[i])
{
cout << i << " " << t - s[i - 1] << endl;
break;
}
}
return 0;
}