第一周周记——算法篇

C++算法题——知识点

素数:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数(素数)

C++算法题——简单循环篇

1.问题描述:

1.super家养了一对刚出生的兔子, 兔子出生第2月后每月都会生一对小兔子, 小兔子出生后同样第2月后也会每月生一对兔子

super想知道:如果兔子不死 ,n月后家里会有多少对兔子?

设计一个程序: 输入n,输出兔子数量 (2<n<30)

样例输入: 7 样例输出:13

样例输入: 12 样例输出: 144

思路:

经典的斐波那契数列,“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*) 

 代码:

int main(){
    int n=0;
    // 用于存储当月 以及前1,2个月的兔子数,即f1和f2
    int f1=1,f2=1,f3=0;
    //--接收输入--
    cin>>n;
    //--数据处理--
    //前两个月不生兔子
    // 每个月的兔子数量 = 上一个月兔子数 + 上上一个月兔子数
    n -= 2;
    while (n--) {
        f3 = f1 + f2;
        f1 = f2;
        f2 = f3;
    }
    //--输出--
    cout<<f3;

}

 2.问题描述:

小球从某一高度落下,每次落地后反跳回原来高度的一半,再落下。
输入弹球的初始高度M和回弹次数N, 输出弹球第N次回弹后的高度和达到该高度后所经过的距离(保留两位小数)
(0<M<1000, 0<N<50)

 思路:

除了第一段下降和最后一段升起的路径只走了一次,其他路径均走了两次。注意保留两位小数的写法%.2lf

代码:

int main(){
    double M,result;
    int N;
    cin>>M>>N;
    result=M;//第一段路程
    for (int i = 0; i <N ; ++i) {
        M=M/2;
        result=result+M*2;
    }
    result=result-M;//最后一段路程
    printf("%.2lf,%.2lf",M,result);

}

C++算法题——嵌套循环篇(一)

1.问题描述(素数):

设计一个程序, 输入N, 输出0~N之间的所有素数(0<N<MAX_INT)

代码:

//素数(0<N<MAX_INT)
int main(){
    int n;
    int index = 1;
    int flag=0; //标识符 值为1表示素数 值为0表示非素数
    scanf("%d",&n);
    for (int i = 2; i <=n ; ++i) {
        flag=0;
        for( index =2;index<sqrt(i);++index){
            // 如果i%index为0 则该数字是非素数 0表示假 !取反为真
            if(i%index==0){
                flag=1;
                break;
            }
        }
        //如果flag是0 表示是素数 打印
        if (flag==0){
            printf("%d\n",i);
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值