实现程序(主流编程语言任选)实现并简单描述。
void main(void){ int a[5]={1,3,5,7,9}; int b[5]; int i; b[0]=1; for (i=1;i<5;i++){ b[i]=b[i-1]*a[i-1]; } for(i=3;i>=0;i--){ b[0]*=a[i+1]; if(i==0) break; b[i]*=b[0]; } for(i=0;i<5;i++){ printf("%d ",b[i]); } }
2、随机生成和为S的N个正整数——投影法
参考 http://blog.csdn.net/morewindows/article/details/8439393
假设生成和为20的4个正整数:
#include<time.h> int sort(int *array,int len){ int i=0; int j=0; unsigned tmp; for(i=0;i<len-1;i++){ for(j=0;j<len-i-1;j++){ if(array[j]>array[j+1]){ tmp = array[j]; array[j] = array[j+1]; array[j+1] =tmp; } } } for(i=0;i<len;i++){ printf("%d ",array[i]); } printf("\n"); return 0; } int generate(){ int i=0,a[3],b[4]; srand((unsigned )time(NULL)); for(i=0;i<3;i++){ a[i]=rand()%20; printf("%d ",a[i]); } printf("\n"); sort(a,3); printf("///////\n"); b[0]=a[0]; printf("%d ",b[0]); for(i=1;i<3;i++){ b[i]=a[i]-a[i-1]; printf("%d ",b[i]); } b[3]=20-a[2]; printf("%d ",b[3]); printf("\n"); } void main(){ generate(); }