100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分

蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分

时间:2024-03-07 12:08:59

相关推荐

蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分

目录

1.p0802

2.A的B的C次方次方

3.出现次数最多的整数

4.成绩分级

5.台阶问题

1.p0802

问题描述

编写一个字符串表达式求解函数int expression(char* s); 输入一个字符串表达式,返回它的结果。表达式长度不会超过100。表达式最少有一项,且以等号=结束。表达式中只包含加法和减法,且运算均在整数范围之内。

编写main函数测试该函数的正确性。

输入

2+2345+913-3=

输出

3257

示例代码

#include<iostream>#include<stack>using namespace std;int main() {char c;int c1;stack<int> a;int ans = 0, cnt = 0, res = 0;int temp = 1, yunsuan=1;while (1) {cin >> c;if (c == '=') {//表达式结束temp = 1;res = 0;for (int i = 1; i <= cnt; i++) {//从个位数出栈c1 = a.top();a.pop();res += temp * c1;temp *= 10;}//得到的res就是‘=’左边的整数if (yunsuan == 1) {//yunsuan是整数左边的计算符ans += res;}else {ans -= res;}cout << ans;break;}if (c == '+' || c == '-') {temp = 1;res = 0;for (int i = 1; i <= cnt; i++) {c1 = a.top();a.pop();res += temp * c1;temp *= 10;}if (yunsuan == 1) {ans += res;}else {ans -= res;}if (c == '+') {yunsuan = 1;}else {yunsuan = 0;}cnt = 0;}else {//在遇到计算符前就将整数的各个部分入栈a.push(c - 48);cnt++;}}}

2.A的B的C次方次方

问题描述

//据说很多人的题目会有一大堆废话,本傻×就不在这里废话了。

就是叫你算A的B的C次方次方。

当然了,为了方便起见,把答案%1,000,000,007输出就好。

输入格式

一行,三个整数A,B,C,以空格隔开。

输出格式

输出A的B的C次方次方%1,000,000,007。

样例输入

3 4 5

样例输出

763327764

数据规模和约定

0≤A,B,C≤1,000,000,000

示例代码

#include<iostream>using namespace std;unsigned long long int maxn = 1000000007;unsigned long long int A[11], B[11], A1[11], B1[11], ans1 = 1, ans2 = 1;unsigned long long int pow1(long long int a, long long int b) {//计算a的b次方,b小于等于10unsigned long long int ans = 1;for (int i = 1; i <= b; i++) {ans = (ans * a) % maxn;}return ans;}int main() {unsigned long long int a, b, c;cin >> b >> c >> a;//在这里的顺序是b,c,aif (b == 0) {//0的任何次幂都是0cout << 0;return 0;}if (c == 0) {//任意数的0次幂都是1cout << 1;return 0;}if (a == 0) {//任意数的一次幂都是其本身cout << b;return 0;}A[1] = c;for (int i = 2; i <= 10; i++) {//计算各个位上的modA[i] = pow1(A[i - 1], 10);}unsigned long long int temp = 1000000000, cnt = 10;while (cnt >= 1) {unsigned long long int temp1;temp1 = a / temp;a = a % temp;if (temp1 == 0) {//如果该位置上的数字为0A1[cnt] = 0;temp /= 10;cnt--;continue;}A1[cnt] = pow1(A[cnt], temp1);temp /= 10;cnt--;}for (int i = 1; i <= 10; i++) {//得到b的c次方if (A1[i] != 0)ans1 = (ans1 * A1[i]) % maxn;}//下面原理类似上面B[1] = b;for (int i = 2; i <= 10; i++) {B[i] = pow1(B[i - 1], 10);}temp = 1000000000;cnt = 10;while (cnt >= 1) {unsigned long long int temp1;temp1 = ans1 / temp;ans1 = ans1 % temp;if (temp1 == 0) {B1[cnt] = 0;temp /= 10;cnt--;continue;}B1[cnt] = pow1(B[cnt], temp1);temp /= 10;cnt--;}for (int i = 1; i <= 10; i++) {if (B1[i] != 0) {ans2 = (ans2 * B1[i]) % maxn;}}cout << ans2;}

3.出现次数最多的整数

问题描述

编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。

输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。

输出格式:输出只有一行,即出现次数最多的那个元素值。

样例输入

5

100

150

150

200

250

样例输出

150

示例代码

#include<iostream>using namespace std;int main() {int n, a[1000], cnt = 0, max = 0, ans = 0;cin >> n;if (n <= 0) {//如果n不符合标准,则直接退出程序return 0;}a[0] = -100;for (int i = 1; i <= n; i++) {cin >> a[i];if (a[i] != a[i - 1]) {//说明上一个数以及输入完了if (max < cnt) {max = cnt;ans = a[i - 1];}cnt = 1;//a[i]的数目}else {//和上一个相同的数cnt++;}}if (cnt > max) {//对最后一个数的判断max = cnt;ans = a[n];}cout << ans;}

4.成绩分级

问题描述

编写一个程序,输入一个百分制成绩(整数),输出相应的成绩等级。规定:90或90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为F。(注:出自课本第四章第7题)

样例输入

43

样例输出

F

示例代码

#include<iostream>using namespace std;int main() {int n;cin >> n;if (n >= 90) {cout << 'A';}else if (n >= 80) {cout << 'B';}else if (n >= 70) {cout << 'C';}else if (n >= 60) {cout << 'D';}else {cout << 'F';}return 0;}

5.台阶问题

问题描述

楼梯有N(N<25)级台阶,上楼时一步可以走一级台阶,也可以走二级或三级台阶。请编写一个递归程序,计算共有多少种不同的走法?

样例输入

3

样例输出

4

示例代码

#include<iostream>using namespace std;int fac(int n) {if (n == 1) {//1return 1;}if (n == 2) {//11 2return 2;}if (n == 3) {//111 12 21 3return 4;}if (n > 3) {return fac(n - 1) + fac(n - 2) + fac(n - 3);}}int main() {int n;cin >> n;cout << fac(n);return 0;}

蓝桥杯算法训练合集四 1.p0802 2.A的B的C次方次方 3.出现次数最多的整数 4.成绩分级 5.台阶问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。