下面介绍几个PAT中常用的几个小套路,帮助无基础的快速入门:
求最大值,最小值,平均值
将一个变量初始化为一个很小的数,然后与给定的数字一个一个的比较。如果遇到一个比它大的数,就把它的值换成那个更大的数,否则继续比较。
最小值同理
平均值则是在每次循环的末尾累加数值,最后再除于个数。
#include "iostream"
using namespace std;
int main(){
int n, a, minnumber, maxnumber, total;
cout << "请输入你要输入的个数" << endl;
cin >> n;
cin >> a;
total = minnumber = maxnumber = a;
for(int i=1; i<n;i++){
cin >> a;
if(minnumber>a){
minnumber = a;
}
if(maxnumber<a){
maxnumber = a;
}
total = total + a;
}
cout << "最大值是" << maxnumber << endl;
cout << "最小值是" << minnumber << endl;
cout << "平均值是" << total / n;
}
求两个给定整数的最大公约数
最大公约数是指多个整数共有的约数中的最大值。可以用欧几里得提出的辗转相除法求得,即假设给定的两个整数是n和m,先求n除以m的余数r1,然后求m除以r1的余数,然后再求r1除以r2的余数r3。以此类推,直到某个作为分母的余数为零。这时分子就是n和m的最大公约数。
#include "iostream"
using namespace std;
int main(){
int r, n, m;
n = 10;
m = 20;
while(m > 0){
r = n % m;
n = m;
m = r;
}
cout << n;
判断一个给定的正整数n是不是整数
素数的判定方法。可以用每个比N小的数试探。如果N能整除这个数,那N就不是素数。如果所有比N小的整数都不能被N整除,则N就是素数。
优化:因为每个盒子都一定含有小于或等于其平方根的质因子,所以只要试探到N的平方根即可。
#include "iostream"
#include "cmath"
using namespace std;
int main(){
int n;
cin >> n;
for(int i=2; i<=sqrt(n); i++){
if(n%i == 0){
cout << n << " 不是素数" << endl;
return 1;
}
}
cout << n << " 是素数" << endl;
return 0;
}