[NOI题库]1.3编程基础之算术表达式与顺序执行 题解(一)

01 A+B问题

经典的A+B Problem——各大题库上的首题。读入$a,b$,输出$a+b$。

#include <iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

01.cpp


02 计算(a+b)*c的值

读入$a,b,c$,输出$c(a+b)$。

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)*c<<endl;
    return 0;
}

02.cpp


03 计算(a+b)/c的值

读入$a,b,c$,输出$\lfloor \dfrac{a+b}{c} \rfloor$。事实上,如果算子均为整数,C++中的除号"/"就可以实现取整了。

#include <iostream>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<(a+b)/c<<endl;
    return 0;
}

03.cpp


04 带余除法

小学算术,设读入的是$a,b$,那么所求的两个数依次为 a/b 和 a%b 。

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

04.cpp


05 计算分数的浮点数值

用 double 类型存储并进行除法运算,注意按格式输出。当然也可以用 1.0*a/b 这样的语句得到实数除的结果。

#include <cstdio>
using namespace std;
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%.9f\n",1.0*a/b);
    return 0;
}

05.cpp


06 甲流疫情死亡率

好可怕的背景啊。。。。。。其实就是两个数相除,结果化为百分数输出。输出语句可以写为 printf("%.3f%%\n",100*x); ,x就是计算出来的商。

#include <cstdio>
using namespace std;
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    b=b*100;
    printf("%.3f%%\n",1.0*b/a);
    return 0;
}

06.cpp


07 计算多项式的值

这道题可以直接算,不过有更好的方法,就是霍纳法则:

\[f(x)=ax^3+bx^2+cx+d=((ax+b)x+c)x+d\]

这样可以使运算次数减少很多。

#include <cstdio>
using namespace std;
int main()
{
    double x,a,b,c,d;
    scanf("%lf%lf%lf%lf%lf",&x,&a,&b,&c,&d);
    printf("%.7f\n",(((a*(x)+b)*x)+c)*x+d);
    return 0;
}

07.cpp


08 温度表达转化

给出$F$,求$C=\dfrac{5}{9}(F-32)$,。

#include <cstdio>
using namespace std;
int main()
{
    double f,c;
    scanf("%lf",&f);
    c=5*(f-32)/9;
    printf("%.5f\n",c);
    return 0;
}

08.cpp


09 与圆相关的计算

给出$R$,求$C=2\pi R$和$S=\pi R^2$。

#include <cstdio>
#define PI 3.14159
using namespace std;
int main()
{
    double r;
    scanf("%lf",&r);
    printf("%.4f %.4f %.4f\n",2*r,2*PI*r,PI*r*r);
    return 0;
}

09.cpp


10 计算并联电阻的阻值

给出$R_1,R_2$,求

\[R=\frac{1}{\frac{1}{R_1}+\frac{1}{R_2}}\]

#include <cstdio>
using namespace std;
int main()
{
    float r,r1,r2;
    scanf("%f%f",&r1,&r2);
    r=1.0/(1/r1+1/r2);
    printf("%.2f\n",r);
    return 0;
}

10.cpp

时间: 2024-10-07 05:55:52

[NOI题库]1.3编程基础之算术表达式与顺序执行 题解(一)的相关文章

NOIP1.3编程基础之算术表达式与顺序执行_06:甲流疫情死亡率

/* 1.3编程基础之算术表达式与顺序执行 06:甲流疫情死亡率 总时间限制: 1000ms 内存限制: 65536kB 描述 甲流并不可怕,在中国,它的死亡率并不是很高.请根据截止2009年12月22日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率. 输入 输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数. 输出 输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位. 样例输入 10433 60 样例输出 0.575% 提示 输出%可以使用printf("%%")

1.3编程基础之算术表达式与顺序执行

刷水题,刷水题 Portal:http://noi.openjudge.cn/ch0103/ 01 a+b 02 (a+b)*c 03 (a+b)/c 04 带余除法 05 计算分数的浮点数值 都是看题意能看懂的题 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int main() { int a,b; cin>>a>>b; cout<&

[NOI题库]1.1题解

今年NOIP居然"各有两道题目从NOI题库中抽取并在原题基础上改动后使用",不好好刷题怎么行. 这是第一篇题解文章,因为题目太水直接上代码了. 1.1编程基础之输入输出 01 Hello, World! 根据题意直接输出"Hello, World!"即可. #include <iostream> using namespace std; int main() { cout<<"Hello, World!"<<e

NOI题库 1768最大子矩阵 题解

NOI题库 1768最大子矩阵  题解 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 的最大子矩阵是 9 2 -4 1 -1 8 这个子矩阵的大小是15. 输入   输入是一个N * N的矩阵.输入的第一行给出N (0 < N <= 100).再后面的若干行中,依

【Scala编程】格式化算术表达式程序

格式化算术表达式程序 为了练习模式匹配的使用,该博文介绍编写格式化算术表达式的程序,最终的呈现结果如下面这个二维布局的数学表达式所示,这里除法运算被垂直打印出来: 1 - * (x + 1) 2 ----------- x 1.5 - + --- 2 x 为了实现这个程序,我们需要做一下工作: 1. 编写一个二维布局库来创建和渲染二维布局元素.这里主要应用Scala面向对象编程的一些方法,通过组合与继承来构建简单部件,进而实现库的设计. 2. 编写一个表达式的格式化类,利用二维布局库来渲染二维字

noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T11——T20

T11 图像旋转 描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出. 输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数.1 <= n <= 100,1 <= m <= 100.接下来n行,每行m个整数,表示图像的每个像素点灰度.相邻两个整数之间用单个空格隔开,每个元素均在0~255之间. 输出 m行,每行n个整数,为顺时针旋转90度后的图像.相邻两个整数之间用单个空格隔开. 样例输入 3 3 1 2 3 4 5 6 7 8 9 样例输出 7 4 1 8 5

noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

T21:单词替换 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写.现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串. 输入 输入包括3行,第1行是包含多个单词的字符串 s;第2行是待替换的单词a(长度 <= 100);第3行是a将被替换的单词b(长度 <= 100). s, a, b 最前面和最后面都没有空格. 输出 输出只有 1 行,将s中所有单词a替换成b之后的字符串. 样例输入 You w

noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T1——T10

T01 矩阵交换行 描述 给定一个5*5的矩阵(数学上,一个r×c的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果. 输入 输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开.第6行包含两个整数m.n,以一个空格分开.(1 <= m,n <= 5) 输出 输出交换之后的矩阵,矩阵的每一行元素占一行,元素之间以一个空格分开. 样例输入 1 2 2 1 2 5 6 7 8 3 9 3 0 5 3 7 2 1 4 6 3 0 8 2 4 1 5 样

noi题库(noi.openjudge.cn) 1.11编程基础之二分查找T01、02、04

T01 查找最接近的元素 描述 在一个非降序列中,查找与给定值最接近的元素. 输入 第一行包含一个整数n,为非降序列长度.1 <= n <= 100000.第二行包含n个整数,为非降序列各元素.所有元素的大小均在0-1,000,000,000之间.第三行包含一个整数m,为要询问的给定值个数.1 <= m <= 10000.接下来m行,每行一个整数,为要询问最接近元素的给定值.所有给定值的大小均在0-1,000,000,000之间. 输出 m行,每行一个整数,为最接近相应给定值的元素