洛谷【B2007-B2012】题解

【B2007】A + B 问题

原题传送门

思路

这题和B2001只有一些不同

只需要把数据类型改为int就行

代码

也可以用【B2001】的代码,具体看这

【B2008】计算 (a+b)×c 的值

原题传送门

思路

这题数据范围较小,可以用short储存a,b,c

表达式的值x最大约为1.99*10^8,超过short的取值范围,用int储存

输入a,b,c,然后带入表达式中,将值赋给x

代码

#include 
using namespace std;

short a, b, c;
int main () {
    scanf("%hd%hd%hd", &a, &b, &c);
    int x = (a + b) * c;
    printf("%d", x);
    return 0; //好习惯*1
}

【B2009】计算 (a+b)/c 的值

原题传送门

思路

这题思路如上题

a,b,c用int储存,用short会出现问题,表达式的值x可以用short,\div就是"/"

代码

#include 
using namespace std;

int a, b, c;
int main () {
    scanf("%d%d%d", &a, &b, &c);
    short x = (a + b) / c;
    printf("%hd", x);
    return 0; //好习惯*2
}

【B2010】带余除法

原题传送门

思路

求余数可以用c++自带的运算符%(mod,取余)

题目取值范围较小,可以用short

代码

#include 
using namespace std;

short a, b;
int main () {
    scanf("%hd%hd", &a, &b);
    printf("%hd %hd", a / b, a % b);
    return 0; //好习惯*3
}

【B2011】计算分数的浮点数值

原题传送门

思路

a,b可以用int储存,节省内存

在计算的时候强制转换为double类型,然后将值赋给double类型的x就行

也可以把a, b,x都设为double类型

代码

#include 
using namespace std;

int a, b;
double x;
int main () {
    scanf("%d%d", &a, &b);
    x = (double)a / (double)b;
    printf("%.9lf", x);
    return 0; //好习惯*4
}

【B2012】甲流疫情死亡率

原题传送门

思路

设死亡率为w%,确诊数为a,死亡数为b

我们有

                                w =\frac{a}{b}

输出%用printf("%%");

代码

#include 
using namespace std;
 
float a, b, x;
int main() {
    scanf("%f%f", &a, &b);
    x = b * 100.0 / a;
    printf("%.3lf%%", x);
    return 0; //好习惯*5
}

你可能感兴趣的:(洛谷信奥一本通,算法)