C++编写S=1+(1+2)+(1+2+3)+...+(1+2+3+...+N)
#include <iostream.h>void main()
{
int n;
cout<<"输入N的值:";
cin>>n;
cout<<"S="<<n*(n+1)*(n+2)/6<<endl;
}
先化简再计算,大家教教我其他方法把... 大家教教我其他方法把...
逻辑错误。
应该管理教我才对。。。 (n*n+n)*(n+2)/6
哇哈哈。。。。 #include <iostream.h>
int sum(int n)
{
int S=0;
for(int i=0;i<=n;i++)
{
S=S+i;
}
return S;
}
void main()
{
int n;
int SS=0;
cout<<"输入N的值:";
cin>>n;
for (int j=0;j<=n;j++)
{
SS=SS+sum(j);
}
cout<<SS<<endl;
}
A哥的代码 一、双重循环:
#include<iostream>
using namespace std;
int main()
{
int s=0,t=0,n;
cin>>n;
for(int i=0;i<n;i++)
for(int j=1;j<=n-i;j++)
s=s+j;
t=t+s;
cout<<"S(n)="<<t<<endl;
return 0;
}
二、单循环:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int temp=0,value=0;
for(int i = 0; i <= n; i++)
{
temp=temp+i;
value=value+temp;
}
cout<<value<<endl;
return 0;
}
三、
#include <iostream.h>
void main(){
int n;
cin>>n;
int temp = 0;
int j = 0;
for(int i = n; i > 0; i--,j++)
{
temp+= (j +1)*(n - j);
}
cout<<temp<<endl;
}
百度来的答案~ #include <iostream>
int main()
{
int n;
cin>>n;
int temp=0,value=0;
for(int i = 0; i <= n; i++)
{
temp=temp+i;
value=value+temp;
}
cout<<value<<endl;
return 0;
}这个应该是最好的 :rggrg我们学老谭的c,第三节课讲的 #include<iostream>
using namespace std;
int factr(int);
int main()
{
int n;
cout << "输入N的值" << endl;
cin >> n;
int i=1;
int s=0;
for(i;i<=n;i++)
{
s+=factr(i);
}
cout << "你所求的数为:" << s<< endl;
return 0;
}
int factr(int n)
{
int sum=0;
if(n==1)
return 1;
sum=factr(n-1)+n;
return(sum);
}
这样应该也可以吧 太变态了~
需要数学算法牛C才行 本帖最后由 轨迹 于 2009-9-1 23:37 编辑
太变态了~
需要数学算法牛C才行
mycsy 发表于 2009-8-31 23:32 http://www.52pojie.cn/images/common/back.gif
汗,不用这个复杂的,个人觉得用递归是比较清晰的办法~~
页:
[1]
2