更多内容会在godownio.github.io更新
算法练习(C++代码)
考研上机或C语言代码笔试准备,暨大机试原题+letcode+牛客+中南大等高校机试
快速幂算法
题目:输入一个整数 n ,求 n^n 的个位数是多少。
快速幂算法:指数为偶数,则底数平方,指数除二;指数为奇数,则指数减一再把结果乘底数,底数平方,指数除二。指数看作二进制,除二可以看作位运算。
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int power=n;
int base=n;
int result = 1;
while(power>0){
if(power%2==1){
result *= base;
power /= 2;
base *= base;//指数为奇数,先乘底数。除二小数部分舍去。底数平方
}
else{
power /= 2;
base *= base;//指数为偶数,除二,底数平方
}
}
cout<<result<<endl;
cout<<result%10;//mod 10即个位数
}
斐波那契
输入一个整数 n ,求斐波那契数列的第 n 项。第一项是1, 第二项是1。要求必须递归!
#include <iostream>
using namespace std;
int f(int n){
if(n==1||n==2){
return 1;
}
else return f(n-2)+f(n-1);
}
int main(){
int n;
cin >> n;
cout<<f(n);
}
成绩排名
对 n 个同学的考试成绩从大到小排名,成绩相同的算同一名。求排名为 m 的成绩。若无排名为m的成绩,输出最后一名的成绩。
- 输入格式
一共三行
第一行:一个整数 n,表示同学的个数。
第二行:n 个整数,表示 n 个同学的成绩。
第三行:一个整数 m,表示排名。
- 输出格式
一个整数,表示排名为 m 的成绩。
- 输入样例
6
100 100 99 98 97
2
- 输出样例
99
#include <iostream>
using namespace std;
int main(){
int n,m;
cout<<"输入同学个数:"<<endl;
cin>>n;
int score[n];
cout<<"输入同学的成绩:"<<endl;
for (int i=0;i<n;i++){
cin>>score[i];
}
//cout<<"1";
for (int i=0;i<n;i++){
for(int j=n-i-1;j>0;j--){
if(score[j]>score[j-1]){
int temp = score[j];
score[j] = score[j-1];
score[j-1] = temp;
}
}//冒泡排序
}
int i=0,j;
for(j=1;j<n;j++){
if(score[j]!=score[i]){
score[++i]=score[j];
}
}//双指针去重
cout<<"输入要查询的排名:"<<endl;
cin>>m;
if(m>i+1){
cout<<score[i]<<endl;
}
else{
cout<<score[m-1];
}
}
括号匹配
给定三种括号{ },[ ], ( ),和若干小写字母的字符串,请问改字符串的括号是否匹配(