闲来无事,散散分 也期望闲来无事的大侠们进来水水
程序代码:#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编辑过]




