1、给定一串递增数列,找到其中两个不同的数字 a[i] 和 a[j],使得a[i] + a[j] = k,并输出较小的那个数
如果有组a[i] 和 a[j] 满足条件,则输出其中数值最小的数,如果没有找到,输出-1
2、有一串无限长数列由所有正整数递增构成,即:12345678910111213...
求该数列上的第 k 个数字是多少
请问是用Java还是C语言实现呢?
#include <stdio.h>
int main() {
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
int n;
scanf("%d",&n);
for(i=0;i<10;i++)
{
int k = n-a[i];
int p=i+1,q=9;
int t = (p+q)/2;
while(a[t] != k && p<q)
{
if(p==q-1)
{
if(a[p] == k)
{
t = p;
break;
}
if(a[q] == k)
{
t =q;
break;
}
p=q;
break;
}
if(a[t] < k)
p = t;
else
q = t;
t = (p+q)/2;
}
if(p<q)
{
printf("%d+%d=%d\n",a[i],a[t],a[i]+a[t]);
break;
}
}
if(i==10)
printf("error");
return 0;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: