1048 Find Coins (25 分)
题意
给出一个数m,要你用n个数中的两个数a ,b,a<=b 组成m,有多种情况则选a最小的情况。n个数都为不大于500的正整数,可能有相通的数。
n ≤10 ^5
m ≤ 10^3
思路
因为所有数都不超过500,直接暴力枚举500内的两个数之和是否等于m。
输入时记录500内每个数的个数,当两个数之和为m,且n个数中有这两个数时即可。
代码
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,money[507],vis[507],x,flag=0;
memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&x);
vis[x]++;
}
for(int i=1;i<=500;i++){
for(int j=1;j<=500;j++){
if(i+j==m){
if(i!=j&&vis[i]>0&&vis[j]>0){
printf("%d %d\n",i,j);
return 0;
}else if(i==j&&vis[i]>=2){
printf("%d %d\n",i,j);
return 0;
}
}
}
}
printf("No Solution\n");
return 0;
}