PAT乙级算法总结

1.进制转换

1.将P进制数字x转换为10进制数y。

int y=0, product=1;
while(x != 0){
	y = y + (x % 10) * product;
	x = x / 10;
	product = product * p;
}

2.将十进制数y转换为Q进制数z。

int z[40], num= 0;//数组z存放进制数y的每一位,num为位数
do{
	z[num++] = y % Q;//除基取余
	y = y / Q;
}while(y != 0);//当商不为0时候进行循环

注意:输出时要从后往前输出结果:for(int i=num-1;i>=0;i--) cout<<z[i];

2.折半(二分)查找

在这里插入代码片

3.运用四舍五入

1.对于总成绩要a的40%+b的60%(四舍五入精确到整数)

ans=(a*0.4+b*0.6+ 0.5);

2.对于某个数N四舍五入

t = N / 2 + N % 2;

4.判断素数

bool isPrime(int n) {
	if (n <= 1) return false;
	for (int i = 2; i * i <= n; i++) {
		if (n % i == 0) return false;
	}
	return true;
}

5.求gcd(最大公约数)的方式

不要缩写成一行,否则会编译错误

int gcd(int x,int y)
{
    return y?gcd(y,x%y):x;
}

6.最小值数组、最大值数组

用途:判断某个下标i左边的数是否都小于a[i],或者右边的数是否都大于a[i]。

//l[i]表示a1~ai中的最大值
//r[i]表示ai~an中的最小值
#include<iostream>
using namespace std;
const int N=1e5+10;
int q[N],l[N],r[N];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>q[i];
    l[0]=-2e9;//特判边界,求最大值,先把0初始化为一个负无穷
    for(int i=1;i<=n;i++) l[i]=max(l[i-1],q[i]);
    r[n+1]=2e9;//特判边界,求最小值,先把n+1初始化为一个正无穷
    for(int i=n;i;i--) r[i]=min(r[i+1],q[i]);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PAT乙级1009题是一个关于字符串处理的题目。根据题目要求,我们需要将输入的字符串按照单词的逆序输出。根据提供的引用内容,我们可以看到有三种不同的解法。 引用\[1\]和引用\[2\]是两个相似的解法,使用了字符串处理函数strchr和strrchr来定位空格字符,并将字符串分割成单词。然后通过循环输出单词,最后输出剩余的最后一个单词。 引用\[3\]是另一种解法,使用了二维数组来存储每个单词。通过循环读取输入的字符串,直到遇到换行符为止。然后通过倒序循环输出每个单词。 根据题目要求,你可以选择其中一种解法来完成PAT乙级1009题。 #### 引用[.reference_title] - *1* [PAT考试乙级1009(C语言实现)](https://blog.csdn.net/JeffreyDDD/article/details/78395267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [PAT乙级1009(C语言实现)](https://blog.csdn.net/weixin_62870950/article/details/124934829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [PAT乙级测试题1009(C语言实现)](https://blog.csdn.net/weixin_45947840/article/details/105943475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值