<html>
<HEAD></HEAD>
<BODY>
<h3>分解n为连续的正整数</h3>
<a href="">博客学习</a>
<textarea rows="50" cols="50">
#include <iostream>
using namespace std;
void fun(int m)
{
int i,j,n,l,k=0;
for(i=0;i<m;i++)
{
n=i;l=0;j=i;
while(l<m)
{
l+=j;
j++;
}
if(l==m)
{
cout<<n<<"->"<<j-1<<endl;
k++;
}
}
if(k==0)
cout<<"NONE"<<endl;
cout<<endl<<endl;
}
int main()
{
fun(20);
return 0;
}
</textarea>
<textarea rows="50" cols="50">
占时还待翻译
</textarea>
<textarea rows="50" cols="50">
#include <iostream>
using namespace std;
void fun(int n)
{
int i=2;
int p=0,m=p;
int j=0;
while(i<=n/3)
{
if(i%2==0);
if(i%2==1)
{
p=n/i;
m=p;j=i/2+1;
while(j--)
{
cout<<"+"<<p-j;
}
j=i/2;
while(j--)
{
cout<<"+"<<++p;
}
}
i++;cout<<endl;
}
}
int main()
{
/**
cin 4
cout 4=1+3
4=2+2
http://anycodes.cn/zh/
今日发现 http://homepage.yesky.com/
一个正整数可以为几个连续正整数的和 C++
**/
fun(20);
return 0;
}
</textarea>
<textarea rows="50" cols="50">
以自己的想法写了一把 思路很清楚 但只能说能给一个解
有不对 和缺少值的情况
</textarea>
<textarea rows="50" cols="50">
void fun(int n)
{
for(int i=1;i<n;i++)
{
for(int j=i+1;j<n;j++)
{int sum=0;int k=i;
for(k=i;k<=j;k++)
{
sum+=k;
}
if(sum==n) cout<<i<<" --------> "<<j<<endl;
}
}
}
</textarea>
<textarea rows="50" cols="50">
这样的代码是正确的但是 是高复杂度的
因为j找了多次遍历
if(sum==n) {cout<<i<<" --------> "<<j<<endl;break;}
改写为这样 就接近原答案的复杂度了 感觉好理解 但都是一样的思想
</textarea>
<textarea rows="50" cols="50"> </textarea>
<textarea rows="50" cols="50"> </textarea>
<textarea rows="50" cols="50"> </textarea>
<textarea rows="50" cols="50"> </textarea>
</BODY>
</html>
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。