【比赛】 AtCoder Beginner Contest 170

题意/题解

A Five Variables

  • 题意:给你五个数,判断哪个是 (0)
  • 题解:边输入边判断

B Crane and Turtle

  • 题意:有两种动物,一种是鹤,有两条腿,另一种是乌龟,有四条腿,现在告诉你有 (x) 个动物 (y) 条腿,问你可不可能。
  • 题解:暴力枚举。

C Forbidden List

  • 题意:给你一个序列,让你从序列中没出现过的数中找一个数 (a) 使得 (|a-x|)最小,输出 (a)
  • 题解:因为序列长度不超过 (100)(x) 不超过 (100) ,序列中的数不超过 (100) 所以答案肯定在 (0 sim 101) 之间暴力枚举即可。

D Not Divisible

  • 题意:给你一个序列让你算出其中不能被序列中除自己(位置不同值相同不算自己)以外的任何一个数整除的数的个数
  • 题解:排序一遍,用小的数去筛大的。

E Smart Infants

  • 题意:咕咕咕
  • 题解:咕咕咕

F Pond Skater

  • 题意:咕咕咕
  • 题解:咕咕咕

代码

A Five Variables

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>

inline void read(int &T) {
	int x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	T=f?-x:x;
}

int main() {
	for(int i=1,x;i<=5;++i) {
		read(x);
		if(x==0) {
			std::cout<<i<<'
';
			return 0;
		}
	}
	return 0;
}

B Crane and Turtle

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>

inline void read(int &T) {
	int x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	T=f?-x:x;
}

int x,y;

int main() {
	read(x),read(y);
	for(int i=0;i<=x;++i) {
		int j=x-i;
		if(i*2+j*4==y) {
			puts("Yes");
			return 0;
		}
	}
	puts("No");
	return 0;
}

C Forbidden List

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#define MAXN 101

inline void read(int &T) {
	int x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	T=f?-x:x;
}

int x,n,a[MAXN];
bool appear[201];

int main() {
	read(x),read(n);
	for(int i=1;i<=n;++i) {
		read(a[i]);
		appear[a[i]]=1;
	}
	std::sort(a+1,a+n+1);
	int minn=2147483647,ans;
	for(int i=101;i>=0;--i) {
		if(!appear[i]) {
			if(abs(x-i)<=minn) {
				minn=abs(x-i);
				ans=i;
			}
		}
	}
	std::cout<<ans<<'
';
	return 0;
}

D Not Divisible

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#define MAXN 200001

inline void read(int &T) {
	int x=0;bool f=0;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=!f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	T=f?-x:x;
}

int n,a[MAXN],times[MAXN*10];
bool okay[MAXN*10];

int main() {
	read(n);int maxx=0;
	for(int i=1;i<=n;++i) {
		read(a[i]);
		if(a[i]>maxx) maxx=a[i];
		++times[a[i]];
	}
	std::sort(a+1,a+n+1);int ans=0;
	for(int i=1;i<=n;++i) {
		if(okay[a[i]]==1) continue;
		++ans;
		if(times[a[i]]>=2) {
			okay[a[i]]=1;
			--ans;
		}
		int j=a[i]+a[i];
		while(j<=maxx) {
			okay[j]=1;
			j+=a[i];
		}
	}
	std::cout<<ans<<'
';
	return 0;
}

反思:

  • 太菜了。
原文地址:https://www.cnblogs.com/poi-bolg-poi/p/13127316.html