首页 > 其他分享 >atcoder ABC 281(A-C)

atcoder ABC 281(A-C)

时间:2022-12-12 14:12:50浏览次数:33  
标签:atcoder ABC int printf long && ans 281 include

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

相关文章