蓝桥杯试题集入门训练C++

BEGIN-1:A+B问题

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b;
    return 0;
 }

Tips:本来以为会有数据溢出的问题,没想到比较简单,如果数据溢出的话数据类型改为long long int即可。

BEGIN-2:序列求和

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long int n;
    cin>>n;
    cout<<n*(n+1)/2;
    return 0;
}

Tips:因为是long long int型,直接除以2可能会向下取整,所以先乘(n+1)避免向下取整。

BEGIN-3:圆的面积

#include<bits/stdc++.h>
#define PI 3.14159265358979323
using namespace std;
int main()
{
    int r;
    cin>>r;
    cout<<setiosflags(ios::fixed)<<setprecision(7)<<PI*r*r;
    return 0;
}

Tips:

a.这个题涉及到π的精确取值,题干给出了两种方法,分别是使PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。

b.C++中保留指定小数位数

输出m,保留n位小数:

cout<<setiosflags(ios::fixed)<<setprecision(n)<<m;

输出m,数据 有效位数为p:

cout<<setprecision(p)<<m;

BEGIN-4:Fibonacci数列

基本操作(然而错辽)

#include<bits/stdc++.h>
using namespace std;
int Fibonacci(int n1)
{
    if(n1<3)
        return 1;
    return Fibonacci(n1-1)+Fibonacci(n1-2);
 }
int main()
{
    int n;
    cin>>n;
    cout<<Fibonacci(n)%10007;
    return 0;
}

AC操作

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    if(n<3)
    {
        cout<<"1";
        return 0;
    }
    int *a=new int[n+1];
    a[1]=1;
    a[2]=1;
    for(int i=3;i<=n;i++)
    {
        a[i]=(a[i-1]+a[i-2])%10007;    
    }    
    cout<<a[n];
    return 0;
}

Tips:数据集范围较大,最大可以达到n=999999,采用基本操作会使数据溢出。所以对斐波那契数列的每一个数字都预先处理。

 

posted @ 2020-03-14 17:10  努力向上的派大星  阅读(342)  评论(0编辑  收藏  举报