来了来了,牛肉面来了,看到题目这道题就必须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;
}
大家不懂多多评论区交流,互相请教互相帮助,没准别人一句话就点通你(亲身经历)
期待和大家共同加油,希望大家不断进步!