题意/题解
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;
}
反思: