A
要求你从N开始,一直打印到0。
N
N-1
......
3
2
1
0
简单
#include<iostream>
using namespace std;
int n;
int main(){
cin>>n;
for(int i=n;i>=0;i--)cout<<i<<endl;
return 0;
}
B
输入一个字符串S,要求S的开头和结尾是大写字母。中间是100000-999999的数字。
设置四个if就可以过了,不用考虑什么最优解啥的。
#include<iostream>
#include<string>
using namespace std;
string in;
int ans[3];
bool t;
int main(){
t=false;
getline(cin,in);
int len=in.size();
if(len!=8){
printf("No");
return 0;
}
if(in[0]<='Z'&&in[0]>='A')ans[0]++;
if(in[7]<='Z'&&in[7]>='A')ans[2]++;
if(in[1]>'0'&&in[1]<='9')ans[1]++;
for(int i=2;i<7;i++){
if(in[i]<='9'&&in[i]>='0')ans[1]++;
}
if(ans[1]==6&&ans[0]&&ans[2]){
printf("Yes");
return 0;
}else{
printf("No");
return 0;
}
}
C
输入一个数组S,数字T。
题意为。有个循环播放的歌单。问T时间后停在了哪首歌上。
如果你一首歌一首歌的去减,会tml。因为我这样tml了一次(哭)
只需要先把T取余ΣSi,然后就一个一个找一下就行了,时间复杂度直接干到O(n)。(Si是指S数组中的第i个数字)
#include<iostream>
using namespace std;
long long in[100005];
int n,an;
long long ans;
long long mod;
int main(){
scanf("%d %lld",&n,&ans);
for(int i=1;i<=n;i++){
scanf("%lld",&in[i]);
mod+=in[i];
}
ans%=mod;
an=1;
while(ans>0){
ans-=in[an];
if(ans<=0)break;
an++;
an%=n+1;
}
printf("%d %lld",an,in[an]+ans);
return 0;
}
标签:atcoder,ABC,int,printf,long,&&,ans,281,include From: https://www.cnblogs.com/bvwvd/p/16975884.html