| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1689 人关注过本帖
标题:[讨论]连续数问题
只看楼主 加入收藏
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
可以有怎样问题。

谁有强殖装甲第二部,可以Q我460054868
2006-11-20 21:47
Welton
Rank: 2
等 级:论坛游民
帖 子:65
专家分:38
注 册:2006-10-25
收藏
得分:0 
#include "math.h"
int cumsum(int n);
main()
{int i=1,j,a;
float b;
printf("Please input a number(x>0).\n");
scanf("%d",&a);
printf("%d\n",cumsum(a));
while(i<=cumsum(a))
{ i++;
if((a*1.0)/i-a/i==0.5)
{ for(j=-i/2;j<=i/2-1;j++)
printf("%d ",a/i+1+j);
printf("\n");}
if(a%i==0&&i%2==1)
{ for(j=-(i/2);j<=i/2;j++)
printf("%d ",a/i+j);
printf("\n");}
}
getch();
}
int cumsum(int n)
{
int a=1,sum=0;
while(sum<n)
{sum=sum+a;
a++;}
return a-1;
}

只是喜欢编程而已!
2006-11-20 22:37
hejing1109
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-9-27
收藏
得分:0 

#include <stdio.h>
#include <math.h>

void main()
{
int x,i,j,k=0,a,m,n,w=0;
printf("Please put in a dight(0<x)\n");
scanf("%d",&x);
printf("--------------------------------------------------------------\n");
for(i=1;i<(sqrt(2*x))/2;i++)
{m=2*i;n=2*i+1;
if(x%m==i)
{a=x/m;k=i;
for(j=0;j<m-1;j++,k--)
printf("%d+",a-k+1);
printf("%d=%d",a-k+1,x);
printf("\n");w++;
}
if(x%n==0&&(x/n-i))
{a=x/n;k=i;
for(j=0;j<n-1;j++,k--)
printf("%d+",a-k);
printf("%d=%d",a-k,x);
printf("\n");w++;
}
}
if(!w)printf("Sorry not exist those dight!\n");
printf("---------------------------------------------------------------\n");
printf("exist %d cases.\n",w);
getchar();
getchar();
}

2006-11-21 03:25
stnlcd
Rank: 1
等 级:新手上路
帖 子:177
专家分:1
注 册:2004-11-21
收藏
得分:0 
以下是引用我不是郭靖在2006-11-20 21:21:27的发言:

#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!


要让一个男人破产,请给他一架相机,要让一个男人倾家荡产,请给他一架望远镜。
2006-11-21 08:42
大妞
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-16
收藏
得分:0 

是新手,试了一试,还编了出来,呵呵
#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);
}
}
}

2006-11-21 14:54
meiling01
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-2
收藏
得分:0 
请5楼和9楼的讲一下思路吧,我看了很久没看懂。,谢谢大家。
2006-11-21 15:26
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 

#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是否为整数,是,即可输出


片言可以明百意 坐驰可以役万里
2006-11-21 16:56
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 
以下是引用C语言学习者在2006-11-20 20:30:49的发言:
这个我以前编过
#include<stdio.h>
int main()
{
int i,j,k=0,t1=1,i1=0,n;
do{
printf("请输入数字\n");
scanf("%d",&n);
for(j=1;j<n;j++)
{for(i=j;i<n;i++)
{
t1++;
k+=i;
if(k==n)
{ i1++;
i=j;
for(i;i<t1;i++)
{ if(i==j)
printf("%d=%d",k,i);
else
printf("+%d",i);
}
printf("\n");
}
}
k=0;
t1=j+1;}
if(i1==0)
printf("none\n");}while(i1==0);
return 0;
}

你的程序输入6时,只输出 6=1+2+3
好像还有一个 6=0+1+2+3 吧,它们也是连续的啊


片言可以明百意 坐驰可以役万里
2006-11-21 17:00
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 

少了一句了

#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");

}


片言可以明百意 坐驰可以役万里
2006-11-21 17:10
weilisky
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2006-7-20
收藏
得分:0 
/*用了等差数列,也试编了一下,可以运行*/

#include <stdio.h>
#include <conio.h>
main()
{
int i,a,num,j;

while(1)
{
printf("please input the number:");
scanf("%d",&num);
for(i=2;i<=num/2;i++)
{
if((2*num-i*(i-1))%(2*i)==0&&(2.0*num-i*(i-1.0))/(2.0*i)>0.0)
{
{
a=(2*num-i*(i-1))/(2*i);
printf("%d=",num);
}
for(j=1;j<i;j++)

printf("%d+",a++);
printf("%d\n",a);
}
}
}
getch();
}
2006-11-21 22:04
快速回复:[讨论]连续数问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058993 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved