刘益梵 • 8天前
#include<bits/stdc++.h>
using namespace std;
int zdgys(int n,int m){
int gys=0;
for(int i=m;i>=1;i--){
int sum=n;
if(n<m) sum=m;
if(n%i==0 && m%i==0){
gys=i;
return gys;
}
}
return 1;
}
int main(){
int n,m;
cin>>n>>m;
cout<<zdgys(n,m);
return 0;
}
评论:
又到过年了,狗熊岭的动物们都忙碌起来,张灯结彩准备过年。李老板却要光头强砍掉一些百年美人松回去。美人松都是很高的,但是也不会超过长整型(long long)。现在光头强看到丛林里有N颗美人松按照从矮到高排好了,当然每棵松的高度都是已知的。李老板要问光头强M次:每次询问高度为K的美人松是否存在?
第一行,两个正整数N,M 1<=N<=10^6,1<=M<=10^3;
第二行,N个正整数,之间用一个空格隔开,表示N棵美人松的高度;
第三行M个正整数k,表示M个询问,每次询问高度为K的美人松是否存在,1<=k<=100000。
(提示:要用scanf读入,否则会超时)
一行M个正整数,之间用一个空格隔开,分别表示对应每次询问高度为K的树的查询结果,如果存在,则输出1,不存在则输出0
5 2
2 3 3 4 5
3 6
1 0
#include <cstdio>
#include <iostream>
using namespace std; long long exist[1000001];
int main() {
int N, M;
scanf("%d %d", &N, &M);
int height;
for (int i = 0; i < N; ++i) {
scanf("%d", &height);
exist[height] =1;
}
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
if (exist[k] > 0){
cout<<1<<" ";
}
else{
cout<<0;return 0;
}
}
return 0;
}
#include <cstdio>
#include <iostream>
using namespace std;
int exist[1000001]; // 用 int 就够了,不需要 long long
int main() {
int N, M;
scanf("%d %d", &N, &M);
int height;
for (int i = 0; i < N; ++i) {
scanf("%d", &height);
exist[height] = 1;
}
for (int i = 0; i < M; ++i) {
int k;
scanf("%d", &k);
if (exist[k] > 0) {
cout << 1;
}
else {
cout << 0;
}
// 除了最后一个数字,后面都加空格
if (i < M - 1) {
cout << " ";
}
}
return 0;
}
#include <cstdio>
#include <map>
using namespace std;
int main() {
int N, M;
scanf("%d %d", &N, &M);
map<long long, int> cnt; // 用long long更安全
// 读入N个高度
for (int i = 0; i < N; ++i) {
long long height;
scanf("%lld", &height); // 用%lld读long long
cnt[height]++;
}
// 处理M个查询
for (int i = 0; i < M; ++i) {
long long k;
scanf("%lld", &k);
printf("%d", cnt[k]); // map直接访问
if (i < M - 1) {
printf(" ");
}
}
return 0;
}