编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。

来源:百度知道 编辑:UC知道 时间:2024/06/21 12:38:21
求C或C++解法,最好是C,谢谢~

#include<stdio.h>
void main()
{
int i,z,x,y,j;
printf("please input z:");//输入整数
scanf("%d",&z);
for(i=1;i<=z;i++)//i:整数序列的个数
for(x=1;x<=z;x++)
{
y=i-1+x;
if((y+x)*i==2*z)
{
for(j=x;j<=y;j++)
printf("%3d",j);
printf("\n");
}
}
}

解题思路:假设正整数 n 能表示为 i 个连续正整数之和且其第一个数为 x,则 n = x * i + (i - 1) * i/2,其中 n, x, i 都为正整数,所以如果 x = (n - (i-1)*i/2) / i 为正整数,则 n 就能表示为i个连续正整数之和。i 的取值范围为2-n/2 +2。

Python答案:
# !/usr/bin/env python
# -*- coding: utf-8 -*-

def foo(n):
for i in range(2, n/2 + 2):
if ((n - (i-1)*i/2) % i) == 0:
x = (n - (i-1)*i/2) / i
print '%d = ' % n,
for j in range(i):
print x + j,
print '\n'
break
else:

任意输入一个正整数,显示该数各位所对应的大写汉字. 编写程序:输入提一个正整数,判断该数是奇数还是偶数,并输出结果 输入一个正整数,求该数的阶乘和,询问用户是否愿意继续. 输入一个小于30000的正整数,要求以相反的顺序输出该数。 2编程实现输入一个正整数,输出其对应的二进制数和十六进制数,要求轮换过程用自编函数来实现。 哪个高手告诉我用C语言怎么编“从键盘上输入一个正整数N,计算该数的各位数字之和并输出”这个题 从键盘输入一个正整数,计算该数的各位数字之和并输出,例如输入数是5246,则计算5+2+4+6并输出 用C编程求121到140之间的弦数(若某个正整数的平方等于另两个正整数的平方和该数为弦数)的个数。 输入三个正整数,若能用这三个数作为边长组成三角形,打印面积,否输出"no"(用Turbo Pascal编程)谢谢! 输入一个数,如果该数是三位数并且是13的倍数,输出OK,否则输出NO.编程