首页 > 学院 > 开发设计 > 正文

poj2140

2019-11-09 19:57:07
字体:
来源:转载
供稿:网友

题目大意:

给一个数字N,写一段程序计算连续整数相加等于N的方法数。比如15, 7+8, 4+5+6, and 1+2+3+4+5.

解题思路:

n=a+a+1+a+2+…+a+k 的情况总数 n=(k+1)*a+(k+1)*k/2=(k+1)(a+k/2) n为整数,k+1为整数,(a+k/2)为整数,k为偶数,k+1为奇数 当n和k+1确定时,a为定值 故解为n的奇因子个数

代码如下:

#include<stdio.h>int main(){ long n; long cnt,count; while(scanf("%d",&n)!=EOF) { count=1; for(cnt=2;(2*n-cnt*cnt+cnt)>0&&(2*n-cnt*cnt+cnt)>=2*cnt;cnt++) if((2*n-cnt*cnt+cnt)%(2*cnt)==0) count++; PRintf("%d/n",count); } return 0; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表