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號