连续整数之和(C语言实现)

连续整数之和(C语言实现)

给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N?
示例 1: 输入: 5 输出: 2
   解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2,3])求和后为 5。
示例 2: 输入: 9 输出: 3
   解释: 9 = 9 = 4 + 5 = 2 + 3 + 4
示例 3: 输入: 15 输出: 4
   解释: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5
说明: 1 <= N <= 10 ^9

  这是本周的算法题。ps:好久都没写博客了

  这个题并不难,奈何今天我已经上了一天Java课了,并不愿意动脑子想时间复杂度更低的方法,就直接暴力循环了。

思路很简单,双重循环,直至满足条件,输出。其实递归应该也可以吧

void Judge(int N){
	int i ,j , k, sum ,iCount = 1;
	int temp;
	for(i = 1;i <= N / 2;i++){
		for(j = i + 1;j < N;j++){
			sum = 0;
			for(k = i;k < j;k++){
				sum += k;
			}
			if(sum == N) {
				iCount++;
				printf("[");
				temp = i;
				while(temp != j){
					printf("%d,",temp++);
					if(j - temp == 1){
						printf("%d]\n",temp++);
					}	
				} 
			}
		}
	}
	printf("[%d]\n",N); 
	printf("%d",iCount);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值