闲来无事,散散分 也期望闲来无事的大侠们进来水水
程序代码:
#include <stdio.h> #include <malloc.h> //把一个正整数分解为2^n+ void mi(int s,int* t,int* len) { int i=0; for(;s>0;i++) { *(t+i)=s & 1; s>>=1; } *len=i; } //使用移位计算等差数列之和 int w_add(int begin,int* t,int end) { int k=begin+end; int j=end-begin+1; int m=k; int sum=0; int len=0; mi(j,t,&len); for(int i=0,k=m;i<len;i++) if(*(t+i)) sum+=k<<i; return sum>>=1; } //测试部分 int main() { int a=1234; int b=9876; int* t; t=(int*)malloc(sizeof(int)*32); int s=w_add(a,t,b); printf("%d+......+%d=%d\n",a,b,s); free(t); return 0; }
[此贴子已经被作者于2015-10-30 13:50编辑过]