##MySecondLog

题目 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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值