博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连续整数和问题
阅读量:7009 次
发布时间:2019-06-28

本文共 1057 字,大约阅读时间需要 3 分钟。

问题描述大部分的正整数可以表示为2个以上连续整数之和。如6=1+2+3,9=4+5=2+3+4.你的任务是求出给定正整数可以表示为多少个2个以上连续整数之和。

 

 

思路:令输入的数为n,i=1,j=i+i,sum=∑(i,j),m=n/2+1;

在3个之中循环。直到不满足条件为止。 条件:i<=j && j<m;

1.若sum<n,说明和不够,则令j加1,sum=sum+j,假如之前有2个数字相加,那么现在变为了3个数字相加。

2.若sum>n,说明和超了,则 让sum=sum-i,假如之前有4个数字相加,那么现在变为了3个数字相加。然后使得i+1

3.若sum=n,说明满足条件,cnt+1.   sum=sum-i,i++ 继续寻找满足和。。

 

 

 

View Code
1 #include 
2 #include
3 using namespace std; 4 int findResult(int n) 5 { 6 int cnt=0; 7 int m=n/2+1; 8 int i=1; 9 int j=i+1;10 int sum=i+j;11 while(i<=j && j<=m)12 {13 if(sum==n)14 {15 cnt++;16 sum-=i;17 i++;18 }19 else if(sum
n)25 {26 sum-=i;27 i++;28 }29 }30 return cnt;31 }32 int main()33 {34 int n,cnt;35 while(scanf("%d",&n)!=EOF)36 {37 cnt=findResult(n);38 printf("%d\n",cnt);39 }40 return 0;41 }

 

 

 

 

转载于:https://www.cnblogs.com/ubuntu-kevin/archive/2013/02/04/2892016.html

你可能感兴趣的文章
如何进行项目管理
查看>>
「Python 算法实战」:栈
查看>>
计算1到100的所有整数中9出现的次数
查看>>
linux下配置mysql解析 遇到新问题两个。
查看>>
查看刀片服务器MAC地址方法 zhoulb@dc
查看>>
VI中显示行号
查看>>
把C代码当shell脚本来执行
查看>>
今年的9月,只能怀念
查看>>
Linux 日志
查看>>
我的友情链接
查看>>
【Android】AndroidStudio空指针解决之:listview与adapter的使用报空 java.lang.NullPointerException...
查看>>
Rsync实现Windows系统与Linux文件同步
查看>>
简单工厂模式( Simple Factory Pattern )
查看>>
CentOS 7安装laravel 5.5.28
查看>>
SQL Server 2005 创建Oracle10g 的链接服务器
查看>>
菜单项启动Activity
查看>>
Ubuntu下安装Python的Tkinter和Pmw库
查看>>
安装Nginx+Lua开发环境
查看>>
nginx nginx.pid无故文件丢失,日志无法正常轮转
查看>>
我的友情链接
查看>>