题目 1018: [编程入门]有规律的数列求和
题目描述
有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前N项之和,保留两位小数。
输入格式
N
输出格式
数列前N项和
样例输入
10
样例输出
16.48
MYCPP;
//把问题想复杂了,定义了两个数组存数据 但是题中并未提示输入数据 所以只是存了0 没有意义
//正确思路:观察这组数据,设第一项的分子为a,分母为b,则第一项为a/b,第二项为(a+b)/a,第三项为((a+b)+a)/(a+b),第四项为(((a+b)+a))+(a+b))/((a+b)+a)…总而言之,后一项的分子为前一项分子分母的和,后一项的分母为前一项的分子
int main()
{
int N;
cin >> N;
int arr1[100];
int arr2[100];
int i, j;
double sum = 0;
arr1[0] = 2;
arr2[0] = 1;
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
arr2[j + 1]=arr1[i] ;
arr1[i + 1] = arr2[j] + arr2[j + 1];
sum += arr1[i] / arr2[j];
}
printf("%.2lf\n", sum);
}
return 0;
}
//正确答案
int main(){
double Sn=0,an=0,n,i,t,a=2.0,b=1.0;//a为分子,b为分母,an为单项和值,Sn为总和
scanf("%lf",&n);
Sn+=a/b;//第一项不在规律中,在循环前先加入
for(i=1;i<n;i++){
t=a;
a=a+b;//将前一项的分子加分母给后一项的分子
b=t;//将前一项的分子给后一项的分母
an=a/b;
Sn+=an;
}
printf("%0.2lf",Sn);
return 0;
}
题目 1019: 自由下落的距离计算
题目描述
一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数
输入格式
M N
输出格式
它在第N次落地时反弹多高?共经过多少米? 保留两位小数,空格隔开,放在一行
样例输入
1000 5
样例输出
31.25 2875.00
MYCPP;//注意审题!!!
//正确答案
int main()
{
double m, h, ans;
int n;
scanf("%lf%d",&m,&n);
h = m / (1 << n);
ans = m + (m - h * 2) * 2;
printf("%.2lf %.2lf", h, ans);
return 0;
}
题目 1020: 猴子吃桃的问题
题目描述
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
输入格式
N
输出格式
桃子总数
样例输入
10
样例输出
1534
MYCPP;
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int i = 0;
int num = 1;
for (i = 1; i < n; i++)
//i从1开始到小于n结束
//因为第n天只剩下1个了 没法吃了所以结束;
{
num = num * 2+ 1;//这里应该先加1后乘2;
}
cout << num << endl;
return 0;
}
//正确答案//这道题的重点是 (num+1)*2;
int main()
{
int n;
cin >> n;
int i = 0;
int num = 1;
int sum = 0;
for (i = 1; i < n; i++)
{
num = (num + 1) * 2;
}
cout << num << endl;
return 0;
}
题目 1021: [编程入门]迭代法求平方根
题目描述
用迭代法求 平方根
公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数
输入格式
X
输出格式
X的平方根
样例输入
4
样例输出
2.000
MYCPP;//正确答案
#include<iostream>
#include<cmath>//利用cmath中的sqrt函数;
using namespace std;
int main()
{
int x;
cin >> x;
double num = 0;
num = double(sqrt(x));//求平方根 sqrt(double a) 求次方 pow(double a,int n)
printf("%.3lf", num);
return 0;
}
题目 1022: [编程入门]筛选N以内的素数
题目描述
用简单素数筛选法求N以内的素数。
输入格式
N
输出格式
2~N的素数
样例输入
100
样例输出
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
MYCPP;
bool isprime(int x)
{
int i;
for (i = 2; i < x; i++)
{
if (x % i == 0)
{
break;
}
}
if (x == i)
{
return true;
}
else
{
return false;
}
}//判断素数
//素数就是除了能被1和自身整除外没有别的因数的数;
int main()
{
int n;
cin >> n;
int i = 2;
for ( i = 2; i <= n; i++) //从2遍历到n
{
if (isprime(i))//从2到n每个都判断一遍0或1,0结束1继续;
{
cout << i << endl;
}
}
return 0;
}