递归练习----练习17(1)

https://ac.nowcoder.com/acm/contest/93963

1.

题目描述

某商场进行打折活动,若购物总金额达到指定值或以上且总件数为5件以上(含5件)时,最低价的一件商品将免费赠予,请编写函数double computePay(int n, double a[], double sv);计算商品总金额。n为商品件数(n>=1),数组a中列出了每件商品的单价格,sv为参与活动时应达到的最低金额,返回这批商品应付的总金额。

输入描述:

第一行为商品件数及参与活动应达到的最低金额(浮点型)。

第二行开始每行为一件商品的价格(浮点型)。

输出描述:

直接输出应支付的总金额,保留两位小数。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    //要求:n>5且总金额达到m。
    float n,m;
    float sum=0;
    cin>>n>>m;
    vector<float>p(n,0);
    for(int i=0;i<n;i++)
    {
        cin>>p[i];
        sum+=p[i];
    }
    //如果n>5,sum>=m;
    if(n>=5&&sum>=m)
    {
        float min=p[0];
        for(int i=1;i<n;i++)
        {
            if(p[i]<min)
            {
                min=p[i];
            }
        }
        printf("%.2f",sum-min);
    }
    else
    {
        printf("%.2f",sum);
    }
    //否则直接输出sum
}

2.

题目描述

请使用递归方法实现老和尚给小和尚讲n(1 ≤ n ≤ 100)遍故事。

输入描述:

一个整数n(1 ≤ n ≤ 100)

输出描述:

讲n遍故事,每遍占一行。

#include <iostream>
using namespace std;
void find(int star,int m,int &sum)
{
    int i;
    for (i=star; i<=m; i++)
    {
        if(m%i==0 && i<=m/i)
        {
            sum++;
            find(i,m/i,sum);
        }
        if(i>m/i) break;
    }
}
int main()
{
    int n,t,i;
    cin>>t;
    for(i=1;i<=t;i++)
    {
        int sum=1;
        cin>>n;
        find(2,n,sum);
        cout<<sum<<endl;
    }
    return 0;
}

3.

题目描述

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。给你两个数,请输出他们的最大公约数。

输入描述:

输入一行,包含两个正整数A,B

1 <= A,B <= 1e9

输出描述:

输出一行,包含一个正整数

#include <iostream>
using namespace std;
int gcd(int a,int b)
{
    if(b==0)
	{return a;}
    else
	{return gcd(b,a%b);}
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<gcd(a,b)<<endl;
}

4.

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以 00 结束),记住了然后反着念出来(表示结束的数字 00 就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入描述:

一行内输入一串整数(小于等于1000个,范围1~100000),以 0 结束,以空格间隔

输出描述:

一行内倒着输出这一串整数,以空格间隔。

#include <iostream>
#include <vector>
using namespace std;
void fish()
{
    vector<int>p(10000);
    int i=0;
    while(cin>>p[i])
    {
        if(p[i]==0)
        {
            goto jieshu;
        }
        i++;
    }
jieshu:
    for(int j=i-1;j>=0;j--)
    {
        cout<<p[j]<<" ";
    }
}
int main()
{
   
    fish();
    
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务