25秋季9月14日 第一次课 常用函数(max,min,abs,sqrt,ceil,floor,round)

· · 个人记录

第一题:B2004

新函数:

stew(x):占x个字符宽度

思路:

先创建一个两个整数函数a,b和c。在输入a,b,c。最后输出,先用setw(8)来占8个字符宽度,然后输出空格在输出a,再用setw(8)来占8个字符宽度,然后输出空格输出b,再用setw(8)来占8个字符宽度,然后输出空格输出c。

代码:

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

第二题:B2004

新函数:

floor():浮点向下取整

思路:

代码中的公式:

a=k*b+r;
r=a-k*b;

先定两个小数变量a,b,在输入a和b,再定一个整数函数x=a/b,最后输出a-floor(a/b)*b;

代码:

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

第三题:B2029

新函数:

ceil():浮点向上取整

思路:

代码中的公式:

圆柱的体积公式:V=3.14*a*a*b;

先定义两个整数函数:h,r。在输入h,r;再来两个double函数:double s=3.14rr*h; double t=20000/s;最后输出ceil(t);

代码:

#include<bits/stdc++.h>
using namespace std;
int h,r;
int main(){
    cin>>h>>r;
    double s=3.14*r*r*h;
    double t=20000/s;
    cout<<ceil(t);
    return 0;
} 

第四题:P5726

新函数:

max(a,b):取a和b的最大值
min(a,b):取a和b的最小值

思路:

先定义一个整数变量和一个二维数组,然后输入n和a[i]再来三个变量int maxn=-1,minn=11,sum=0;再来一个循环:

for(int i=1;i<=n;i++){
        sum+=a[i];
        maxn=max(a[i],maxn);
        minn=min(a[i],minn);
}

最后保留两位小数输出:

cout<<fixed<<setprecision(2)<<double(sum-minn-maxn)/(n-2);

cout<<fixed<<setprecision(2)<<(sum-minn-maxn)*1.0/(n-2);

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[1005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    int maxn=-1,minn=11;
    int sum=0;
    for(int i=1;i<=n;i++){
        sum+=a[i];
        maxn=max(a[i],maxn);
        minn=min(a[i],minn);
    }
    cout<<fixed<<setprecision(2)<<double(sum-minn-maxn)/(n-2);
    return 0;
}

第四题:B2066

新函数:

sqrt():开根号函数

思路:

公式:

总时间=开船时间+求(l+0.5)*人数
开船时间=路程/50*2(来回)
两点之间路程公式(x1,x1)(y1,y2)=sqrt((x1-x2)*(x1-x2)+(y1,y2)*(y1-y2))
路程(0,0)->(x,y)=sqrt(x*x+y*y)
一次救援时间=sqrt(x*x+y*y)/50*2+1.5*人数

先定一个整数变量和一个浮点收变量:int n;double sum=0;在输入n,然后来个for循环:

for(int i=1;i<=n;i++){
    double x,y;
  int z;
    cin>>x>>y>>z;   
  sum+=sqrt(x*x+y*y)/50*2+1.5*z;
}

然后输出:cout<<(int)ceil(sum);

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
    cin>>n;
    double sum=0;
    for(int i=1;i<=n;i++){
        double x,y;
        int z;
        cin>>x>>y>>z;   
        sum+=sqrt(x*x+y*y)/50*2+1.5*z;
    }
    cout<<(int)ceil(sum);
    return 0;
}

第四题:P1639

新函数:

abs():绝对值函数
swap():交换函数
round():浮点四舍五入利用整数取整是向零取整

思路:

先定四个变量:a,b,x,y; 再来两个if判断,判断两种情况,最后输出:cout<<min(abs(a-b),abs(a-x)+abs(y-b))

代码:

using namespace std;
int a,b,x,y;
int main(){
    cin>>a>>b>>x>>y;
    if(a>b){
        swap(a,b);
    }
    if(x>y){
        swap(x,y);
    }
    cout<<min(abs(a-b),abs(a-x)+abs(y-b));
    return 0;
}