22机试回想版
1、判定燃气费
[size=3
]描述
在某国,由于能源短缺,家庭用燃气费居高不下,当局提倡每家每户节流用气,特制定了阶梯燃气费的政策:
- 每户每月用气量在0~3
0立方米时,每立方米代价为5元;
- 超过3
0立方米之后,每立方米代价为8元;
现在给定某户人家某月的用气量,请计算输出该户人家这月的燃气费,
输出结果显示两位小数,两位小数之后的部分四舍五入。
注:请使用双精度浮点数,以确保计算对精度的要求。
提示:可以使用printf(
4;%.21f
4;,.....)实现显示两位小数,两位小数之后的部分四舍五入。
[size=3
]输入格式
输入为一个浮点数,体现用气量
[size=3
]输特别式
输出为燃气费
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() {
- double x;
- cin >> x;
- cout << fixed << setprecision(2) << (x > 3
- 0 ? 3
- 0.0 * 5 +
- ; (x - 3
- 0) * 8 : x * 3
- 0) << 
- 9
- ;\n
- 9
- ;;
- }
复制代码 2、统计闰年数目
[size=3
]描述
闰年是指(年份能够被40
0整除)或(年份能够被4整除但不能够被100整除)的年份。现给定起止年份,输出从起始年份到终止年份(包括起止年份)共有多少个闰年。
[size=3
]输入格式
两个正整数, n n n和 m m m ( 0 < n < m < 
1; 2022 ) (0<n<m<
1;2022) (0<n<m<
1;2022),分别体现起止年份。
[size=3
]输特别式
输出闰年的数目
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { int n, m; cin >> n >> m; int res 
- 1; 0; for (int i 
- 1; n; i <
- 1; m; i+
- ;+
- ;) { res +
- ;
- 1; (i % 40
- 0 
- 1;
- 1; 0 || (i % 4 
- 1;
- 1; 0 && i % 100 !
- 1; 0)); } cout << res << 
- 9
- ;\n
- 9
- ;;}
复制代码 3
、打印图形
[size=3
]描述
给定正整数 n n n,输出如下边长为n的星号平行四边形。
例如 n 
1; 3
n
1;3
n
1;3
时,输出
例如 n 
1; 4 n
1;4 n
1;4 时,输出
要求星号平行四边形上部不能有多余空行,左边不能有多余空列
[size=3
]输入格式
一个正整数 n ( n < 
1; 3
0 ) n(n<
1;3
0) n(n<
1;3
0)
[size=3
]输特别式
如题要求的星号平行四边形。
[size=3
] C o d e Code Code
- void solve() { int n; cin >> n; for (int i 
- 1; 1; i <
- 1; n; i+
- ;+
- ;) { for (int j 
- 1; 1; j <
- 1; i; j+
- ;+
- ;) cout << 
- 9
- ;*
- 9
- ;; cout << 
- 9
- ;\n
- 9
- ;; } for (int i 
- 1; 1; i < n; i+
- ;+
- ;) { for (int j 
- 1; 1; j <
- 1; i; j+
- ;+
- ;) cout << 
- 9
- ; 
- 9
- ;; for (int j 
- 1; i +
- ; 1; j <
- 1; n; j+
- ;+
- ;) cout << 
- 9
- ;*
- 9
- ;; cout << 
- 9
- ;\n
- 9
- ;; }}
复制代码 4、密文数据
[size=3
]描述
n n n位的正整数 ( 0 < n < 10 ) (0<n<10) (0<n<10),现在由键盘输入正整数n,请编程输出密文数据。加密规则为:每位数字加6
,然后用和除以8的余数再加1,代替该数字,即为密文数据。
[size=3
]输入格式
一个正整数 n ( 0 < n < 10 ) n(0<n<10) n(0<n<10)
[size=3
]输特别式
密文数据
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { string s; cin >> s; for (auto &c : s) { int x 
- 1; c - 
- 9
- ;0
- 9
- ;; cout << (x +
- ; 6
- ) % 8 +
- ; 1; }}
复制代码 5、(NOIP2015)
;金币
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)
;,每天收到两枚金币;之后三天(第四、五、六天)
;,每天收到三枚金币;之后四天(第七、八、九、十天)
;,每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 N N N每天天收到 N N N枚金币后,骑士会在之后的连续 N +
; 1 N+
;1 N+
;1天里,每天收到 N +
; 1 N+
;1 N+
;1枚金币。
请计算在前 K K K天里,骑士一共获得了多少金币。
[size=3
]输入格式
一个正整数 n ( 0 < n < 10000 ) n(0<n<10000) n(0<n<10000)
[size=3
]输特别式
骑士获得的金币数。
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { // 预处理 vector<int> v; v.push_back(0); for (int i 
- 1; 1; i <
- 1; 500; i+
- ;+
- ;) { for (int j 
- 1; 1; j <
- 1; i; j+
- ;+
- ;) v.push_back(i); } // 输入 cin >> k; int res 
- 1; 0; for (int i 
- 1; 1; i <
- 1; k; i+
- ;+
- ;) res +
- ;
- 1; v[i]; cout << res << endl;}
复制代码 6
、记忆暗码
[size=3
]描述
王教授是一位数学家,他在上网时,总喜好用4个数字给自己的帐号设置暗码,为了便于记忆暗码,王教授选择的4个数字恰好构成等差数列,例如下面四个数字4 8 12 16
当每一次出现忘记4个暗码数字中的某一个数字时,王教授都可以通过别的3
个数推算出忘记的数字,现在轮到你来算出被忘记的数字。按数列次序给定还记得的3
个数,问忘记的数是多少?
[size=3
]输入格式
第一行三个整数
[size=3
]输特别式
输出被忘记的数字(假如满足条件的数字不止一个,输出最小的那一个)
;
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { int a, b, c; cin >> a >> b >> c; // 等差数列 int d1 
- 1; b - a, d2 
- 1; c - b; if (d1 
- 1;
- 1; d2) cout << a - d1; else if (d1 < d2) cout << b +
- ; d1; else cout << b - d2;}
复制代码 7、真质数
[size=3
]描述
找出正整数M和N之间(N不小于M)的全部真质数。真质数的定义:假如一个正整数P为质数,且其反序也为质数,那么P就是真质数。例如,11
,13
均为真质数,因为11
的反序照旧为11
,13
的反序为3
1也为质数。
[size=3
]输入格式
输入两个数 M M M和 N N N,空格隔断, 1 ≤ M ≤ N ≤ 1000 1≤M≤N≤1000 1≤M≤N≤1000。
[size=3
]输特别式
按从小到大输出M和N之间(包括M和N)的真质数,每行一个。
假如之间没有真质数,则输出N0。
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- bool check(int x) { if (x < 2) return false; for (int i 
- 1; 2; i < x / i; i+
- ;+
- ;) { if (x % i 
- 1;
- 1; 0) return false; } return true;}void solve() { int a, b; cin >> a >> b; int res 
- 1; 0; for (int i 
- 1; a; i <
- 1; b; i+
- ;+
- ;) { string s 
- 1; to_string(i); reverse(s.begin(), s.end()); if (check(i) && check(stoi(s))) { res +
- ;+
- ;; cout << i << 
- 9
- ;\n
- 9
- ;; } } if (!res) cout << 
- 4;NO\n
- 4;;}
复制代码 8、倒置句子
[size=3
]描述
给定一行英文句子(以回车竣事,由字母、标点符号和空格组成,最长不超过120字符),现要求将句子中的每一个英文单词倒置过来,其它符号位置不变。例如:
I ma yppah yadot! 处理完酿成 I am happy today!
注:为了简化处理,假设句子中不存在合成形式,例如doesn’t,也不存在复合词,例如well-being
[size=3
]输入格式
一行英文句子,以回车竣事,最长不超过120字符
[size=3
]输特别式
单词倒置后的句子
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { string str; getline(cin, str, 
- 9
- ;\n
- 9
- ;); string res; stack<char> st; // 使用栈翻转 for (auto c : str) { if (isalpha(c)) { st.push(c); } else { while (!st.empty()) { res +
- ;
- 1; st.top(); st.pop(); } res.push_back(c); } } while (!st.empty()) { res +
- ;
- 1; st.top(); st.pop(); } cout << res << endl;}
复制代码 9
、分割子串
一个字符串序列只包含左右括号两种字符,并且确保它是一个正当的括号序列。现在我们想把这个字符串分割成若干个子串,且分割后的每个子串仍是一个正当的括号序列,请问分割后最多能得到多少个子串。
比如括号序列”(())
;()”,可以在第四个字符处分割得到最多两个子串,因此答案是2,而括号序列”(()())”,无法分割得到正当的子串,答案是1。
[size=3
]输入格式
第一行一个整数 n n n 体现字符串长度。 ( 2 < 
1; n < 
1; 80 )
; (2<
1;n<
1;80)
; (2<
1;n<
1;80)
;
第二行一个学符串。
[size=3
]输特别式
分割后最多能得到子串数目。
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- void solve() { int n; string str; cin >> n >> str; // 贪婪 int cnt 
- 1; 0, res 
- 1; 0; for (auto &c : str) { c 
- 1;
- 1; 
- 9
- ;(
- 9
- ; ? cnt +
- ;+
- ; : cnt --; if (cnt 
- 1;
- 1; 0) res +
- ;+
- ;; } cout << res << endl;}
复制代码 10、修剪二叉树
一棵二叉树的每个结点都有一个美丽值(可能为负值)
;,全部结点的美丽值之和为二叉树的美丽值。作为农业大学的学生,你需要修剪某些结点使得树的美丽值尽可能的大。留意当你剪掉某个结点时,这个结点的全部子结点也会被剪掉。请输出修剪后二叉树后可能得到的最大美丽值。
[size=3
]输入格式
第一行一个整数n,体现结点数目,结点编号1至n,且1为根节点。 ( 1 < 
1; n < 
1; 10000 ) (1<
1;n<
1;10000) (1<
1;n<
1;10000)
第二行 n n n个整数,代表结点 1 1 1至 n n n的美丽值。之后 n n n行,每行3
个整数,3
个数字分别为结点编号,结点左孩子和右孩子编号。
[size=3
]输特别式
一个整数,修剪后二叉树的最大美丽值。
留意:岂论如何修剪,必须保存根结点,因为根结点都没有,树还在吗?
[size=3
]输入样例
- 55 -16
- 23
- 12 -171 2 52
- 3
- 43
- 0 04 0 05 0 0
复制代码 [size=3
]输出样例
[size=3
] C o d e Code Code
- const int N 
- 1; 1e4 +
- ; 7;int n;int a[N], l[N], r[N];int dfs(int u) { if (u 
- 1;
- 1; 0) return 0; int left 
- 1; dfs(l[u]); int right 
- 1; dfs(r[u]); return max(left, 0) +
- ; max(right, 0) +
- ; a[u];}void solve() { cin >> n; for (int i 
- 1; 1; i <
- 1; n; i+
- ;+
- ;) { cin >> a[i]; } for (int i 
- 1; 1; i <
- 1; n; i+
- ;+
- ;) { int x, lv, rv; cin >> x >> lv >> rv; l[x] 
- 1; lv, r[x] 
- 1; rv; } cout << dfs(1) << endl;}
复制代码 11
、吃豆子
小明是一位游戏高手,他最喜好的游戏是一种吃豆子游戏:
在一个n行m列的方格内,每一个方格中有一个豆子,每一个豆子有相应的分值,当游戏玩家控制吃豆人进入方格时就会立即吃掉该格的豆子,得到该豆子的分值,但是并不是每一次都加分,有些有毒的豆子吃了会减分。
游戏开始时,吃豆人会首先出现在最左上的方格内,玩家可以通过键盘上的上下左右键控制吃豆人向上下左右第一次走一格,当吃豆人走到最右下的方格内时,游戏竣事。小明每次玩这个游戏都能得到非常高的分数,然而今天,他的键盘“向上”和“向左”的控制键坏了,他只能通过键盘控制吃豆人向右和向下走,小明一下子变得不太会玩这个游戏了,他盼望你帮助,给定一个n行m列的游戏结构,问在“向上”和“向左”两个控制键破坏的情况下,游戏竣事时最多能吃到多少分数?
[size=3
]输入格式
第一行两个数 n n n和 m ( 0 < m , n 
1; 100 ) m(0<m,n
1;100) m(0<m,n
1;100),分别代表行数和列数。
此后 n n n行,每行 m m m个数(每个数在 [ − 100 , 100 ] [-100,100] [−100,100]范围内)
;,以空格分隔
[size=3
]输特别式
输出能得到的最高分数
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- const int N 
- 1; 1e2 +
- ; 7;int n, m;int dp[N][N], a[N][N];void solve() { cin >> n >> m; for (int i 
- 1; 0; i < n; i+
- ;+
- ;) { for (int j 
- 1; 0; j < m; j+
- ;+
- ;) { cin >> a[i][j]; } } // 初始化 dp[0][0] 
- 1; a[0][0]; for (int i 
- 1; 1; i < n; i+
- ;+
- ;) { dp[i][0] 
- 1; dp[i - 1][0] +
- ; a[i][0]; } for (int i 
- 1; 1; i < m; i+
- ;+
- ;) { dp[0][i] 
- 1; dp[0][i - 1] +
- ; a[0][i]; } // dp for (int i 
- 1; 1; i < n; i+
- ;+
- ;) { for (int j 
- 1; 1; j < m; j+
- ;+
- ;) { dp[i][j] 
- 1; max(dp[i - 1][j], dp[i][j - 1]) +
- ; a[i][j]; } } cout << dp[n - 1][m - 1] << endl;}
复制代码 12、恋爱配对
小D同学最近在开发一款恋爱配对的社交软件。若有只身男和只身女各 n n n人,配对软件根据各人性格、爱好、家庭和条件等,为恣意两个男女计算了一个配对矩阵 P P P和 Q Q Q。 P [ i ] [ j ] P[j] P[j]值体现若以男 i i i为主导和女 j j j进行配对的分值, Q [ i ] [ j ] Q[j] Q[j]值体现若以女 j j j为主导和男 i i i进行配对的分值,由于生理状态等因素, P [ i ] [ j ] P[j] P[j]不一定和 Q [ i ] [ j ] Q[j] Q[j]相当。那么,将男i和女恋爱配对的适配度记为 P [ i ] [ j ] ∗ Q [ i ] [ j ] P[j]*Q[j] P[j]∗Q[j]。
请你设计一个恋爱配对算法,计算这 2 n 2n 2n个只身男女(共 n n n对)
;的每一对男女的适配度总和,使他们团体上的适配度总和到达最大。如下的 P P P和 Q Q Q矩阵为例,最佳男女恋爱配对应该为(男1,女1)
;、(男3
,女2)
;和(男2,女3
)
;,适配度总和最大值为 10 ∗ 2 +
; 4 ∗ 5 +
; 4 ∗ 3

1; 52
10*2 +
; 4*5+
; 4*3

1; 52
10∗2+
;4∗5+
;4∗3

1;52
。
P 
1; [ 10 2 3
2 3
4 3
4 5 ] Q 
1; [ 2 2 2 3
5 3
4 5 1 ] P 
1; \begin{bmatrix} 10 & 2 & 3
\\ 2 & 3
& 4 \\ 3
& 4 & 5 \end{bmatrix} \ Q 
1; \begin{bmatrix} 2 & 2 & 2 \\ 3
& 5 & 3
\\ 4 & 5 & 1 \end{bmatrix} \ P
1; 1023
23
43
45 Q
1; 23
425523
1
[size=3
]输入格式
输入数据第一行有1个正整数为 n ( 1 < n < 10 ) n(1<n<10) n(1<n<10)。接下来的 2 n 2n 2n行,每行 n n n个正整数,以空格隔断。
前 n n n行是 P P P,后 n n n行是 Q Q Q。
[size=3
]输特别式
输出全部配对方案中团体上男女适配度总和的最大值。
[size=3
]输入样例
- 3
- 10 2 3
- 2 3
- 43
- 4 52
- 2 23
- 5 3
- 4 5 1
复制代码 [size=3
]输出样例
[size=3
]思绪
全排列搜索全部答案并更新
[size=3
] C o d e Code Code
杂
N14
78喝饮料
[size=3
]题目描述
商店里有 n n n中饮料,第i种饮料有 m i m_i mi毫升,代价为 w i w_i wi。
小明现在手里有 x x x元,他想吃尽量多的饮料,于是向你寻求帮助,怎么样买才能吃的最多。
请留意,每一种饮料都可以只买一部分。
[size=3
]输入描述:
有多组测试数据。
第一行输入两个非负整数 x x x和 n n n。
接下来 n n n行,每行输入两个整数,分别为 m i m_i mi和 w i w_i wi。
全部数据都不大于 1000 1000 1000。
x x x和 n n n都为 − 1 -1 −1时程序竣事。
[size=3
]输出描述:
请输出小明最多能喝到多少毫升的饮料,结果保存三位小数。
[size=3
]输入样例
- 23
- 3
- 6
- 6
- 123
- 6
- 6
- 3
- 2 23
- 6
- 6
- 6
- 6
- 1 58 5-1 -1
复制代码 [size=3
]输出样例
[size=3
]思绪
贪婪 根据每种饮料的性价比排序, 按性价比依次购买即可
[size=3
] C o d e Code Code
- typedef pair<double, double> PDD;const int N 
- 1; 1e3
- +
- ; 7, inf 
- 1; 0x3
- f3
- f3
- f3
- f;int n, m;void solve() { while (cin >> m >> n) { if (m 
- 1;
- 1; -1 && n 
- 1;
- 1; -1) break; vector<PDD> v; for (int i 
- 1; 1; i <
- 1; n; i+
- ;+
- ;) { double x, y; cin >> x >> y; v.emplace_back(x ,y); } sort(v.begin(), v.end(), [&] (PDD &a, PDD &b) { return a.y / a.x < b.y / b.x; }); int s 
- 1; m; double res 
- 1; 0; for (auto &p : v) { if (s <
- 1; 0) break; int mi 
- 1; p.x, wi 
- 1; p.y; if (s >
- 1; wi) { res +
- ;
- 1; mi, s -
- 1; wi; } else { res +
- ;
- 1; mi * (1.0 * s / wi); s 
- 1; 0; } } printf(
- 4;%.3
- f\n
- 4;, res); }}
复制代码 N11
11
斐波那契数列
[size=3
]题目描述
存在如下数列1、1、2、4、7、13
、24
、44、81、14
9
……,现要求该数列第n项的值(n从0开始算)。
[size=3
]输入描述:
输入包含多组测试数据,每组数据包含一个整数 n ( 0 < 
1; n < 
1; 70 ) n(0<
1;n<
1;70) n(0<
1;n<
1;70)。
[size=3
]输出描述:
每组输出只占一行,包含一个整数,体现该数列第n项的值。输出结果用6
4位数字生存。
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- #define int long longconst int N 
- 1; 70 +
- ; 7, inf 
- 1; 0x3
- f3
- f3
- f3
- f;int n, f[N];void init() { f[0] 
- 1; 1, f[1] 
- 1; 1, f[2] 
- 1; 2; for (int i 
- 1; 3
- ; i <
- 1; 70; i+
- ;+
- ;) { f[i] 
- 1; f[i - 1] +
- ; f[i - 2] +
- ; f[i - 3
- ]; }}void solve() { init(); while (cin >> n) { cout << f[n] << endl; }}
复制代码 N1542这是第几天?
[size=3
]题目描述
输入一个年月日的有用日期,输出这一天是今年第几天?
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
- const int months[] 
- 1; {0, 3
- 1, 28, 3
- 1, 3
- 0, 3
- 1, 3
- 0, 3
- 1, 3
- 1, 3
- 0, 3
- 1, 3
- 0, 3
- 1};bool check(int y) { return (y % 40
- 0 
- 1;
- 1; 0 || (y % 4 
- 1;
- 1; 0 && y % 100 !
- 1; 0));}void solve() { int y, m, d; scanf(
- 4;%d-%d-%d
- 4;, &y, &m, &d); int res 
- 1; d +
- ; (m > 2 && check(y)); for (int i 
- 1; 1; i < m; i+
- ;+
- ;) res +
- ;
- 1; months[i]; printf(
- 4;%d\n
- 4;, res);}
复制代码 N152
0字符游戏
[size=3
]题目描述
明又得到了一个字符数组,每个字符都是a-z其中的一个,你需要统计出每种字符出现的次数,他的幸运数字照旧5和7,所以需要你按出现次序输出其中个数是5和7的倍数的字符,并输出其个数。
[size=3
]输入描述
第一行包含一个正整数 n ( 1 < 
1; n < 
1; 1000 ) n(1<
1;n<
1;1000) n(1<
1;n<
1;1000),第二行是一个含有n个字符的字符数组
[size=3
]输出描述
按题意输出
[size=3
]输入样例
- 24
- aaaaabbbbbbbbbbccddddddd
复制代码 [size=3
]输出样例
[size=3
] C o d e Code Code
- int n, mp[26
- ];string str;void solve() { cin >> n >> str; string seq; for (auto &c : str) { if (+
- ;+
- ; mp[c - 
- 9
- ;a
- 9
- ;] 
- 1;
- 1; 1) seq.push_back(c); } for (auto &c : seq) { int k 
- 1; mp[c - 
- 9
- ;a
- 9
- ;]; if (k % 5 
- 1;
- 1; 0 || k % 7 
- 1;
- 1; 0) cout << c << 
- 9
- ; 
- 9
- ; << k << endl; }}
复制代码 N1870字符值
[size=3
]题目描述
给定一个字符串S,s1为S的子串,求s1的ASCll值之和。
[size=3
]输入描述
第一行输入一行字符串S(不含空格)
;。
第二行输入一个整数n,代表有n次扣问。
接下来n行,每行两个整数 l , r ( 1 < 
1; l < 
1; r < 
1; ∣ S ∣ )
; l,r(1<
1;l<
1;r<
1;|S|)
; l,r(1<
1;l<
1;r<
1;∣S∣)
;。体现 s 1 s1 s1的开始和竣事(下标从1开始)
;。
[size=3
]输出描述
对于每次扣问,输出一个整数x体现答案
[size=3
]输入样例
[size=3
]输出样例
[size=3
]提示
数据范围:
对于3
0%的数据: S < 
1; 100 , 1 < 
1; q < 
1; 1000 S<
1;100,1<
1;q<
1;1000 S<
1;100,1<
1;q<
1;1000
对于50%的数据: S < 
1; 1000 , 1 < 
1; q < 
1; 100 S<
1;1000,1<
1;q<
1;100 S<
1;1000,1<
1;q<
1;100
对于100%的数据: S < 
1; 1000 , 1 < 
1; q < 
1; 100000 S<
1;1000,1<
1;q<
1;100000 S<
1;1000,1<
1;q<
1;100000
[size=3
] C o d e Code Code
- //// Created by SpareLin on 2025/2/20.// 给定一个字符串S,s1为S的子串,求s1的ASCll值之和。 前缀和处理//#include <bits/stdc+
- ;+
- ;.h>using namespace std;const int N 
- 1; 1e3
- +
- ; 7;int q, l, r, s[N];string str;int main() { cin.tie(nullptr)->ios::sync_with_stdio(false); cin >> str; cin.get(); int n 
- 1; str.size(); for (int i 
- 1; 0; i < n; i+
- ;+
- ;) { s[i +
- ; 1] 
- 1; s[i] +
- ; str[i]; } cin >> q; while (q --) { cin >> l >> r; cout << s[r] - s[l - 1] << 
- 9
- ;\n
- 9
- ;; } return 0;}
复制代码 ISBN号码识别
[size=3
]题目描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9
位数字、1位识别码和3
位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号)
;,最后一位是识别码,例如0-6
70-8216
2-4就是一个尺度的ISBN码。ISBN码的首位数字体现书籍的出版语言,例如0代表英语;第一个分隔符-之后的三位数字代表出版社,例如6
70代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。
识别码的计算方法如下:
首位数字乘以1加前次位数字乘以2……以此类推,用所得的结果与 11
求余,所得的余数即为识别码,假如余数为10,则识别码为大写字母X。例如ISBN号码0-6
70-8216
2-4中的识别码4是这样得到的:对06
708216
2这9
个数字,从左至右,分别乘以1,2,…,9
再求和,即0×1+
;6
×2+
;……+
;2×9

1;158,然后取158 mod 11
的结果4作为识别码。
你的使命是编写程序判定输入的ISBN号码中识别码是否正确,假如正确,则仅输出Right
;假如错误,则输出你认为是正确的ISBN号码。
[size=3
]输入描述
一个字符序列,体现一本书的ISBN号码(保证输入符合ISBN号码的格式要求)
;。
[size=3
]输出描述
一行,假如输入的ISBN号码的识别码正确,那么输出Right
,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符-)
;。
[size=3
]输入样例
[size=3
]输出样例
[size=3
] C o d e Code Code
怎么借书
[size=3
]题目描述
小明有n本书,他的好朋友小红、小新、小林想向小明借书,若每人只能借一本书,可以有多少种差别的借法?
[size=3
]输入描述
一个整数n,代表书的序号为(1、2、……、n)
;。
[size=3
]输出描述
用A,B,C分别代表三个好朋友
依次输出每个人可借的书序号
以及有用的借阅方法总数。
[size=3
]输入样例
[size=3
]输出样例
- A:1 B:2 C:3
- A:1 B:3
- C:2A:2 B:1 C:3
- A:2 B:3
- C:1A:3
- B:1 C:26
复制代码 [size=3
] C o d e Code Code
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123
.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |