关于memset
  • 板块灌水区
  • 楼主kyries
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/10/4 17:06
  • 上次更新2023/10/27 08:50:10
查看原帖
关于memset
508257
kyries楼主2022/10/4 17:06
这是大佬的正解
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 1e6+10;
int n, q;
int a[N], tem[N];
int c[N], x[N];

int main()
{
	//读入 
	scanf("%d%d", &n, &q);
	for(int i = 1; i <= n; i++)
		scanf("%d", &a[i]);
		
	for(int i = 1; i <= N; i++)
		tem[i] = 1;
	sort(a, a + n + 1);
	
	for(int i = 1; i <= q; i++)
	{
		scanf("%d%d", &c[i], &x[i]);
		for(int j = 1; j <= c[i]; j++)
			tem[i] *= 10;
	}
	
	for(int i = 1; i <= q; i++)
	{
		bool flag = false;
		for(int j = 1; j <= n; j++)
		{
			if(a[j] % tem[i] == x[i])
			{
				flag = true;
				printf("%d\n", a[j]);
				break;
			}
		}
		if(flag == false) 
			printf("-1\n");
	}
	return 0;
}
蒟蒻的打法
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
const int N = 1e6+10;
int n, q;
int a[N], tem[N];
int c[N], x[N];

int main()
{
	//读入 
	scanf("%d%d", &n, &q);
	for(int i = 0; i < n; i++)
		scanf("%d", &a[i]);
		
	//for(int i = 1; i <= N; i++)
	//	tem[i] = 1;
   memset(tem, 1, sizeof(tem));
	sort(a, a + n );
	
	for(int i = 0; i < q; i++)
	{
		scanf("%d%d", &c[i], &x[i]);
		for(int j = 0; j < c[i]; j++)
			tem[i] *= 10;
	}
	
	for(int i = 0; i < q; i++)
	{
		bool flag = false;
		for(int j = 0; j < n; j++)
		{
			if(a[j] % tem[i] == x[i])
			{
				flag = true;
				printf("%d\n", a[j]);
				break;
			}
		}
		if(flag == false) 
			printf("-1\n");
	}
	return 0;
}

memset的赋值有问题吗??

orz

2022/10/4 17:06
加载中...