7-1 Camp0104-累加1+2+...+100
作者 王和兴
单位 东北大学秦皇岛分校
高斯在小时候很顽皮,但是也显示出极高的天赋。
有一次放学后,因为全班同学整队时纪律不好,集体被老师留在教室里罚写作业。
老师要求所有同学完成从1至100的加法后才可返学离开,高斯很快写出了答案5050后离开学校了。但是他的小伙伴可就没这么幸运了,老老实实的做加法。
现在请你帮助高斯的同学们,编写一个程序,来计算表达式1+2+3+...+100的值并输出。
输入格式:
本题无输入
输出格式:
在一行中输出1+2+3+...+100的值。
输入样例:
无
输出样例:
在这里给出相应的输出。例如:
5050
解答:
#include <iostream>
using namespace std;
int main()
{
int i,sum=0;
for(int i = 1;i<=100;i++)
{
sum = sum + i;
}
cout<<sum<<endl;
return 0;
}
7-2 Camp0105-累加从a到b区间的和
作者 王和兴
单位 东北大学秦皇岛分校
本题给出整数区间[a,b],请计算并输出从a至b区间内所有的整数的和,题目保证运算结果在整数范围内。
输入格式:
在一行中给出2个整数a和b(a<b)。
输出格式:
在一行中输出从a累加到b和值。
输入样例:
1 100
输出样例:
5050
解答:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int sum = 0;
if(a<b)
for(int i = a;i<=b;i++)
{
sum = sum + i;
}
cout<<sum<<endl;
return 0;
}
7-3 求N分之一序列前N项和
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6
输出样例:
sum = 2.450000
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
double sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+1.0/i;
}
cout<<"sum = "<<fixed<<setprecision(6)<<sum<<endl;
return 0;
}
7-4 求奇数分之一序列前N项和
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
23
输出样例:
sum = 2.549541
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
double sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+1.0/(2*i-1);
}
cout<<"sum = "<<fixed<<setprecision(6)<<sum<<endl;
return 0;
}
7-5 求简单交错序列前N项和
作者 C课程组
单位 浙江大学
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。
输入样例:
10
输出样例:
sum = 0.819
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int flag=1;
double sum=0;
double item;
for(int i=1;i<=n;i++)
{
item=flag*1.0/(3*i-2);
sum=sum+item;
flag=-flag;
}
cout<<"sum = "<<fixed<<setprecision(3)<<sum<<endl;
return 0;
}
7-6 求平方与倒数序列的部分和
作者 C课程组
单位 浙江大学
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。
输入格式:
输入在一行中给出两个正整数m和n(m≤n),其间以空格分开。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。
输入样例:
5 10
输出样例:
sum = 355.845635
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
double sum=0;
for(int i=m;i<=n;i++)
{
sum=sum+i*i+1.0/i;
}
cout<<"sum = "<<fixed<<setprecision(6)<<sum<<endl;
return 0;
}
7-7 求交错序列前N项和
作者 陈建海
单位 浙江大学
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
输入样例:
5
输出样例:
0.917
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
double flag=1.0;
double sum=0;
double item;
for(int i=1;i<=n;i++)
{
item=i*flag/(2*i-1);
sum=sum+item;
flag=-flag;
}
cout<<fixed<<setprecision(3)<<sum<<endl;
return 0;
}
7-8 分数序列前n项之和
作者 王和兴
单位 东北大学秦皇岛分校
有一分数序列:
12,23,35,58,813,1321,......
求出这个数列前n项之和。
输入
在一行中输入一个整数n。
输出格式:
数列前n项之和,精度为小数点后4位。
输入样例:
10
输出样例:
16.4799
解答:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1]={0,1,2};
int b[n+1]={0,2,3};
double sum=3.5;
double item;
for(int i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
b[i]=b[i-1]+b[i-2];
item=b[i]*1.0/a[i];
sum=sum+item;
}
cout<<fixed<<setprecision(4)<<sum<<endl;
return 0;
}
7-9 计算n的阶乘
作者 崔孝凤
单位 山东理工大学
编写程序,求自然数1至n(n>1)的累乘积(即阶乘)。其中n的值从键盘输入(n<=12)。
输入格式:
输入一个正整数。
输出格式:
输出一个正整数,最后换行。
输入样例:
8
输出样例:
40320
解答:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
long long m=1;
for(int i=1;i<=n;i++)
{
m=m*i;
}
cout<<m<<endl;
return 0;
}
7-10 循环-拆分成和
作者 叶青
单位 长春理工大学
输入一个自然数,拆分成两个非负整数的和,输出所有组合
输入格式:
输入一个自然数
输出格式:
拆分成两个非负整数的和,输出所有可能的两个数相加的表达式
输入样例:
7
输出样例:
0+7=7
1+6=7
2+5=7
3+4=7
解答:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<=n;i++)
{
for(int j=0;j<=n;j++)
{
if((i+j)==n&&i<=j)
{
cout<<i<<"+"<<j<<"="<<n<<endl;
}
}
}
return 0;
}