谁有强殖装甲第二部,可以Q我460054868
#include <stdio.h>
int main(void)
{
long left, right;
long sum;
long GIVEN;
scanf("%ld",&GIVEN);
for (sum = 0, left = right = 1; left < GIVEN/2+1; right++)
{
sum += right;
while (sum > GIVEN)
{
sum -= left;
left++;
}
if (sum == GIVEN)
printf("%ld - %ld\n", left, right);
}
return 0;
}
Good!
是新手,试了一试,还编了出来,呵呵
#include<stdio.h>
#include<math.h>
void printout(int n,int s,int i)
{
int k;
printf("%d=%d+",n,s);
for(k=1;k<i;k++) printf("%d+",s+k);
printf("%d\n",s+i);
}
int main()
{
int n,s,i,sum,found=0;
printf("Please input an interger:\n");
scanf("%d",&n);
printf("n=%d\n",n);
for(s=1;s<floor(n+1/2);++s)
{
sum=s;
for(i=1;;i++)
{
sum=sum+s+i;
if (sum>n) break;
else if (sum<n) continue;
else printout(n,s,i);
}
}
}
#include <stdio.h>
main()
{
int n,a,m,i,flag=0;
printf("input a number ( >0 ) : ");
scanf("%d",&m);
for(n=2; n<=m/2+1; n++)
{
if((2*m-n*n)%n==0)
{
if(((2*m-n*n)/n+1)%2==0)
{
flag=1;
a=((2*m-n*n)/n+1)/2 ;
printf("%d=",m);
for(i=0; i<n-1; i++)
printf("%d+",a++);
printf("%d\n",a);
}
}
}
if(flag==0) printf("Don't have\n");
}
设输入的数为m
输出的第一个数为a ,有n个连续的数
则可得
a a+1 a+2 .... a+n-1
即 (2a+n-1)n/2=m
对于每个可能的n,测试相应的a是否为整数,是,即可输出
你的程序输入6时,只输出 6=1+2+3
好像还有一个 6=0+1+2+3 吧,它们也是连续的啊
少了一句了
#include <stdio.h>
main()
{
int n,a,m,i,flag=0;
printf("input a number ( >0 ) : ");
scanf("%d",&m);
for(n=2; n<=m/2+1; n++)
{
if((2*m-n*n)%n==0)
{
if(((2*m-n*n)/n+1)%2==0)
{
flag=1;
a=((2*m-n*n)/n+1)/2 ;
if(a<0) continue; //a有可能为负数
printf("%d=",m);
for(i=0; i<n-1; i++)
printf("%d+",a++);
printf("%d\n",a);
}
}
}
if(flag==0) printf("Don't have\n");
}