第19届PTA 天梯赛 兰州牛肉面+整数的持续性

        来了来了,牛肉面来了,看到题目这道题就必须AC了(吃货)

        这道题就是简单的一个统计,统计多少碗,统计营业额,模拟直接AC

        代码

#include<iostream>
using namespace std;
double jia[101];
int wan[101];
int main()
{
    int N;
    cin>>N;
    for(int i=1;i<=N;i++)
    {
        cin>>jia[i];
        wan[i]=0;
    }
    int a,b;
    cin>>a>>b;
    double sum=0;
    while(a!=0)
    {
        sum+=jia[a]*b;
        wan[a]+=b;
        cin>>a>>b;
    }
    for(int i=1;i<=N;i++)
        cout<<wan[i]<<endl;
    printf("%.2lf",sum);
}

jia[] 是牛肉面的单价,wan[]是计数,sum记录多少money

一个while循环去统计,最后按照顺序输出多少碗,然后保留2位小数输出营业额。printf是真好用,强烈建议大家用C++的去学一下scanf和printf 真的贼好用,而且很快

我这人喜欢拓展,说到快了,就给大家补充一下吧

C++超时,要是懒得进行优化时间复杂度,就用scanf和printf去替换cin和cout就可以

要是你还懒(我真···) 在main()函数里面的最前端加入

ios::sync_stdio_with(0);cin.tie(0);cout.tie(0);   行了,都这么懒了,去查查这个的注意事项吧,我就不拓展了,比如不能使用cout<<endl;进行换行了,我们需要使用cout<<"\n";去换行。还有其他注意事项自己查查吧,不能太懒~

整数持续性:

         从任一给定的正整数 n 出发,将其每一位数字相乘,记得到的乘积为 n1​。以此类推,令 ni+1​ 为 ni​ 的各位数字的乘积,直到最后得到一个个位数 nm​,则 m 就称为 n 的持续性。例如 679 的持续性就是 5,因为我们从 679 开始,得到 6×7×9=378,随后得到 3×7×8=168、1×6×8=48、4×8=32,最后得到 3×2=6,一共用了 5 步。       

        这道题,需要提前告诉大家的是,先问一下吧,假如给一个 个位数,它的持续性应该是多少呢?

        模拟模拟还是模拟。主体就是用一个while循环判断几次就变成了个位数,另外写了一个cal函数(将各位数字相乘返回),不断更新maxd值,假设持续性等于当前maxd值,我就加入到ans容器里,作为最后答案输出,因为判断就是按照数字递增顺序,所以不用最后排序或者用set集合。

        最后按照题意输出即可。

        (个位数的持续性应该是0吧,你理解对了嘛)

#include<iostream>
#include<vector>
#include<bits/stdc++.h>
using namespace std;
vector<int> ans;
int maxd=-1;
int cal(int x)
{
    string s=to_string(x);
    int res=1;
    for(int i=0;i<s.size();i++)
        res*=(s[i]-'0');
    return res;
}
int main()
{
    int a,b;
    cin>>a>>b;
    for(int i=a;i<=b;i++)
    {
        a=i;
        int num=0;
        while(a>9)
        {
            num++;
            a=cal(a);
        }
        if(num>=maxd)
        {
            if(num>maxd)
            {
                maxd=num;
                ans.clear();
            }
            ans.push_back(i);
        }
    }
    bool pl=false;
    cout<<maxd<<endl;
    for(auto i:ans)
    {
        if(pl) cout<<' ';
        cout<<i;
        pl=true;
    }
    return 0;
}

大家不懂多多评论区交流,互相请教互相帮助,没准别人一句话就点通你(亲身经历)

 期待和大家共同加油,希望大家不断进步!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值