都是特别简单的题,稍微记住一下辗转相除法即可,有时候会忘
最大公约数和最小公倍数
记住辗转相除法
#include<iostream>
#include<cmath>
using namespace std;
int gcd(int a,int b){
int tmp=1;
while(tmp!=0){
tmp=a%b;
a=b;
b=tmp;
}
return a;
}
int main(){
int a,b;
cin>>a>>b;
int c=gcd(a,b);
cout<<c<<" "<<a*b/c<<endl;
return 0;
}
字符棱形
这题怎么说,过了,但是我没太懂啥叫棱形
或许只能输入奇数?
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int main(){
int n;
cin>>n;
//2*n-1行
//每一行都是1,3,5这样来?
int max_char=2*n-1;
for(int i=1;i<=(2*n-1)/2+1;i++){
//先输出空格
//空格数取决于(最大的一行的字符数减去该行字符数)/2
for(int j=1;j<=(max_char-(2*i-1))/2;j++){
cout<<" ";
}
//再输出*
for(int j=1;j<=(2*i-1);j++){
cout<<"*";
}
cout<<endl;
}
//在输出逆的
for(int l=1;l<=n-1;l++){
int i=n-l;
for(int j=1;j<=(max_char-(2*i-1))/2;j++){
cout<<" ";
}
//再输出*
for(int j=1;j<=(2*i-1);j++){
cout<<"*";
}
cout<<endl;
}
return 0;
}
快速排序
我直接sort了,现在感觉复习太容易忘了,等六月末再复习
上楼梯
#include<iostream>
#include<cmath>
using namespace std;
const int N=25;
int dp[N];
int main(){
dp[1]=1;dp[2]=2;dp[3]=4;
for(int i=4;i<=20;i++){
dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
}
int n;
cin>>n;
cout<<dp[n]<<endl;
return 0;
}