给定一串递增数列,找到其中两个不同的数字 a[i] 和 a[j],使得a[i] + a[j] = k,并输出较小的那个数。
如果有组a[i] 和 a[j] 满足条件,则输出其中数值最小的数,如果没有找到,输出-1。
输入
输入为一串递增数组 a 和一个正整数 k,其中
1 <= a.length <= 10^5
1 <= a[i] <= 10^6
1 <= k <= 10^6
输出
输出为一个整数,表示在递增数组 a 中找到的两个相加和等于 k中较小的那个数,如果找到多组这样的数,输出值最小的那个数。
#include <stdio.h>
int main()
{
int a[1000];
int n,k,i,j,t,f=0;
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
if(f==1)
break;
if(a[i] >= k)
break;
for(j=i+1;j<n;j++)
{
t = a[i] + a[j];
if(t==k)
{
printf("%d",a[i]);
f = 1;
break;
}
if(t>k)
break;
}
}
if(f==0)
printf("-1");
return 0;
}
#include "stdio.h"
void main()
{
int a[10] = {1,3,5,9,11,20,30,33,45,68};
int i,j;
int k;
scanf("%d",&k);
for(i=0;i<10;i++){
for(j=0;j<9;j++){
if(i!=j && a[i]+a[j]==k){
printf("%d+%d=%d\t",a[i],a[j],k);
printf("较小的数字是:%d\n",a[i]>a[j]?a[j]:a[i]);
}
}
}
}