进制
//输入:进制在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;
}