2022蓝桥省赛B

进制

//输入:进制在1-16,要转换的数中大于10的用A-F表示
//10 20 6(数本来的进制 要转换的数 目标进制)
//32(结果)?
#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n, m;
	string num;

	cin >> n >> num >> m;

	int tmp = 0;//把num转换成十进制
	int len = num.size();
	for(int i = 0, j = len - 1; i < len; i ++, j -- )
	{
		int k;
		if (num[j] >= 'A' && num[j] <= 'F')
			k = num[j] - 'A' + 10;
		else
			k = num[j] - '0';
			
		tmp += k * pow(n, i);
	}

	stack<char> sta;
	
	while(tmp)//转换成任意进制 
	{
		int t;
		char str;
		t = tmp % m;
		tmp /= m;
		if (t >= 10)
			str = t - 10 + 'A';
		else
			str = t + '0';
		
		sta.push(str);
	}

	while(sta.size())//输出 
	{
		cout << sta.top();
		sta.pop();
	}
	return 0;
}

常用函数

isalpha(ch)若ch是字母返回非0值

isdigit(ch)若ch是数字返回非0值

tolower(ch)若ch是大写字母返回相应小写

toupper(ch)若ch是小写字母返回相应大写字母

abs(num)返回整数绝对值

fabs(num)返回双精度绝对值

exp(x)返回指数函数ex的值

log(x)返回lnx的值

log10(x)返回lgx的值

pow(x, y)返回x的y次方

sqrt(x)

ceil(x)返回不小于x的最大整数

floor(x)返回不大于x的最大整数

栈 

s.empty()

s.size()

s.top()

s.pop()

s.push()

刷题统计

思路:纯暴力会超时,把它归为一星期算一次。

#include <bits/stdc++.h>

using namespace std;

int main()
{
	long long a, b, n;
	cin >> a >> b >> n;
	
	long long week = a * 5 + b * 2;
	long long ans = n / week * 7;
	long k = n % week;
	
	if(k <= a * 5)
		ans += k / a + (k % a != 0); 
	else
		ans += 6;
	
	cout << ans;
	
	return 0;
}

修剪灌木

思路:长到最大的时候就是剪完自己的在重新轮到自己的这段时间,而在剪掉自己的时候会再长一次,max(i, n - 1 - i) * 2。

#include <bits/stdc++.h>

using namespace std;

int main()
{
	int n;
	cin >> n;
	
	for(int i = 0; i < n; i ++ )
	{
		cout << max(i, n - 1 - i) * 2 << " "; 
	}
	
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值