71. 先行后列
从 1开始的 n×m个整数按照先行后列的规律排列如下:

给定 n 与 m,再给定一个数字 c,请输出 c 所在的行数与列数。
输入
第一行:两个整数表示 n 与 m
第二行:一个整数表示 c
输出
两个整数:表示 c 所在的行数与列数。
样例
10 10
30
3 10
数据范围
\(1 \leq n,m \leq 10000\)
\(1 \leq c \leq n×m\)
【分析】
1.回忆整数相除上取整的方式:x/y 上取整:
2.一个数字c在矩阵某个位置,每m个数字作为一行,当前是第几行。类比有c个苹果,每m个苹果为一箱,一共几箱(包含不装满的)
,想想是上取整还是下取整。
计算行的代码是:__h=__________________
3.一个数字c在第几列,类比类比有c个苹果,每m个苹果为一箱(装满为一箱),剩下几个苹果?但是有个区别,不存在%m余数是m的,但是有m列。
计算列的代码是 :__ l=___________________
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,x;
scanf("%d%d%d",&n,&m,&x);
int h=_____________/m;
int l=x-______________;
printf("%d %d",h,l);
return 0;
}
P1508. 奇偶成双
请求出从 \(1\) 以上,\(K\) 以下(包括 \(1\) 和 \(K\))的正整数中,偶数和奇数各选一个的方法的个数。
不考虑选择的顺序,即,\((a,b)\) 和 \((b,a)\) 算作同一种方案。
Input Format
一个正整数 \(K\)
Output Format
方案数
Sample
样例输入 1
3
样例输出 1
2
样例输入 2
6
样例输出 2
9
Hint
$2≤K≤100 $。
第一组样例:只有 \((2,1)\) 和 \((2,3)\) 两种方案符合条件
【分析】
1.k如果是偶数,正好从n/2个奇数中选择一个,从n/2个偶数中选择一。方案数是 : _________________
2.如果k是奇数,奇数是一半(取整),偶数是一半(下取整),正好可以写成一个
#include<bits/stdc++.h>
using namespace std;
int main(){
int k;
cin>>k;
cout<<(k/2)*((k+1)/2);
return 0;
}
P1570 直角三角形の面积
有直角三角形 $ ABC \(。\)∠ABC=90°$。
三角形 $ ABC $ 三个边的长度为 \(|AB|,|BC|,|CA|\),输出这个三角形 $ ABC $ 的面积。保证答案为整数。
Input Format
一行三个整数 \(|AB|\) \(|BC|\) \(|CA|\)
Output Format
输出这个三角形 $ ABC $ 的面积
Sample
样例输入 1
3 4 5
样例输出 1
6
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,m;
cin>>a>>b>>c;
m=a*b/2;
cout<<m;
return 0;
}
P98 等差数列的第n项
等差数列的第一项是\(a1\),公差是\(d\),求等差数列的第n项的值
输入
三个整数$ a1 、d、n$, 满足 \(1\leq a1,d,n\leq 1000\) .
输出
一个整数, 第\(n\)项的值.
样例
输入1
1 1 4
输出1
4
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c;
d=a+((c-1)*b);
cout<<d;
return 0;
}
98. 等差数列的第n项
等差数列的第一项是\(a1\),公差是\(d\),求等差数列的第n项的值
输入
三个整数$ a1 、d、n$, 满足 \(1\leq a1,d,n\leq 1000\) .
输出
一个整数, 第\(n\)项的值.
样例
1 1 4
4
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a1,d,n,q;
cin>>a1>>d>>n;
q=(a1+a1+d*(n-1))*n/2;
cout<<q;
return 0;
}
91. 最小值
给定两个数\(x和y\),输出两者比较小的数
输入
两个整数, x and y
输出
一个整数, 两者最小值.
样例
123 500
123
时间/空间限制
\(1 \leq x,y \leq 10^6\)
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
scanf("%d%d",&a,&b);
int c=min(a,b);
printf("%d",c);
return 0;
}
92. 三个数的最大值
给定两个数\(x、y和z\),输出三者比较大的数
输入
两个整数, x y z
输出
一个整数, 三者最大值.
样例
123 500 345
500
时间/空间限制
\(1 \leq x,y,z \leq 10^6\)
#include<bits/stdc++.h>
using namespace std;
int main(){
int x,y,z;
cin>>x>>y>>z;
int c=max(max(x,y),z);
cout<<c;
return 0;
}
94. 向下取整
给定一个浮点数\(x\),输出其向下取整的值
输入
一个浮点数, x
输出
一个整数, x向下取整的值.
样例
123.897
123
时间/空间限制
\(1 \leq x \leq 10^6\)
#include<bits/stdc++.h>
using namespace std;
int main(){
double x;
cin>>x;
cout<<floor(x);
return 0;
}
题目描述
给定一个浮点数\(x\),输出其向上取整的值
输入
一个浮点数, x
输出
一个整数, x向上取整的值.
样例
123.897
124
时间/空间限制
\(1 \leq x \leq 10^6\)
#include<bits/stdc++.h>
using namespace std;
int main(){
double x;
int d;
cin>>x;
d=ceil(x);
cout<<d;
return 0;
}
96. 绝对值
给定一个整数\(x\),输出其绝对值
输入
一个整数, x
输出
一个整数, x的绝对值.
样例
-123
123
时间/空间限制
\(-10^6 \leq x \leq 10^6\)
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
int d=abs(x);
cout<<d;
return 0;
}
97. 开平方
给定一个完全平方数\(x\),输出对其开平方的结果(只输出正数部分)
输入
一个整数, x
输出
一个整数, x开平方的结果(只输出正数部分).
样例
9
3
时间/空间限制
\(1 \leq x \leq 10^9\)
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
scanf("%d",&x);
double c=sqrt(x);
int d=c;
printf("%d",d);
return 0;
}
100. 幂次方
给定两个整数\(x,y\),输出\(x^y\)
输入
两个整数, x,y
输出
一个整数, \(x^y\).
样例
2 3
8
时间/空间限制
\(1 \leq x,y \leq 15\)
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b;
cin>>a>>b;
long long c=pow(a,b);
cout<<c;
return 0;
}
P28. 三角形面积
输入三角形的三条边a,b,c,输出三角形的面积。(a,b,c是正整数<100,满足三角形条件)
保留两位小数。
计算三角形面积用 海伦公式。
海伦公式:P代表三角形周长的一半。S代表三角形面积。
$ p = \dfrac{a+b+c}{2} $
$ S=\sqrt{p(p-a)(p-b)(p-c)} $
输入格式
三个由空格隔开的整数,表示三角形的三条边。
数据保证三个整数肯定能组成三角形。
输出格式
一个实数,表示三角形的面积。
样例
28 23 31
309.74
提示
保证a,b,c是正整数<100,满足三角形条件。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
double p=(a+b+c)/2.0;
double s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.2lf",s);
return 0;
}
109. 小酷的储蓄计划
教育储蓄所得的利息不用纳税,所以爸爸为小酷存了教育储蓄基金
题目描述
爸爸为小酷存了n年的教育储蓄基金,年利率为R%,储蓄的本金是\(x\)元,请问,到期后,共领到本金和利息共多少?
输入
三个整数,分别是\(n,R,x\), 满足 \(1\leq x,y,R\leq 2000\) .
输出
一个浮点数, 保留4为小数.
样例
10 5 10000
16288.9463
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,r,x;
cin>>n>>r>>x;
double d=x*pow((1+0.01*r),n);
printf("%.4lf",d);
return 0;
}
113. 曼哈顿距离
曼哈顿距离(Manhattan Distance)是一种在几何度量空间中测量两点之间距离的方法,也称为城市街区距离(City Block Distance)。它定义为在各坐标轴方向上距离的总和。在二维空间中,曼哈顿距离可以理解为从一个点到另一个点只能沿着水平或垂直方向行走的最小距离
曼哈顿距离的数学公式为:
$d(i, j) = |x_i - x_j| + |y_i - y_j| \(
其中,\)(x_i, y_i)和 (x_j, y_j)$ 是二维空间中的两个点。这个公式表示两个点在标准坐标系上的绝对轴距总和。
输入
四个整数,$ x_i,y_i,x_j,y_j$
\(-1000\leq x_i,y_i,x_j,y_j\leq 1000\)
输出
一个整数, 表示两点之间的曼哈顿距离.
样例
123 500 3 4
616
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
int e=abs(a-c)+abs(b-d);
cout<<e;
return 0;
}
浙公网安备 33010602011771号