2012年腾讯招聘实习生笔试题

来源:互联网 发布:孤岛惊魂3低配优化 编辑:程序博客网 时间:2024/04/20 12:39

程序的问题:已知数组a[n],求数组b[n].要求:b[i]=a[0]*a[1]*……*a[n-1]/a[i],不能用除法。
 a.时间复杂度O(n),空间复杂度O(1)。 b.除了迭代器i,不允许使用任何其它变量(包括栈临时变量等)

 

 

#include <stdio.h>#include <stdlib.h>#define N 11int main(){        int a[N], b[N], i;        for(i= 0; i < N; i++){               a[i]= i + 1;        }        b[0]=1;b[N-1]=1;        for(i=1; i < (N-1)-1; i++)        {            if (  ((N/2)*2 != N ) && (i==(N/2)) )            {                b[i]=b[0]*b[N-1]*a[0]*a[N-1];            }            else if (i<((N+1)/2))            {                b[i]=a[i-1]*b[i-1];                b[N-1-i]=b[N-i]*a[(N-1)-(i-1)];                b[0]=b[0]*a[i];                b[N-1]=b[N-1]*a[N-1-i];            }            else            {                b[i]=b[i]*b[0]*a[0];                b[N-1-i]=b[N-1-i]*b[N-1]*a[N-1];                b[0]*=a[i];                b[N-1]*=a[N-1-i];            }        }        b[0]*=a[N-1];        b[N-1]*=a[0];        for(i = 0; i < N; i++){               printf("%d %d\n", a[i], b[i]);        }        printf("\n");        return 0;}


 

原创粉丝点击