c语言程序
Yang是一个小学生。他的数学老师给全班同学布
置了一道题,即根据一张由不超过5000的n(n<50)
个正整数组成的数表,两两相加得到n(n-1)/2个和,
然后把它们排序。例如,如果数表含有四个数
1,3,4,9,那么正确答案应该是4,5,7,10,12,13。Yang做
完题后出去玩了一下午,回家后发现数表不见了,可
是他算出的答案还在。
你能帮助Yang根据他的答案计算出原来的数表
吗?
参考答案:因为是排序过的,所以可以确定前3个数的具体数值,将所得答案顺序输入数组a[n];则原题前3个数为x=a[1]-a[0];y=a[0]-x;z=a[1]-y;可以存入数组b[m];然后进行判断,然后将已知数两两相加排除部分数,以4 5 7 10 12 13为例,排除4 5 7 则10必定为第4个数与x的和,可求出第4个数,并存入b[m],方便下一步排除;同时设1个记数器i,i=0;j=0;b[0]每新加个数i++,直到i=n-j-1截止;截止后j++然后就用b[j]加,计数器清零再循环直到i=n-j-1后j++换b[j],如此循环就出来了
程序自己解决