iwtgm-7
N.
因为输入只有两个字母,结果最多只有两位数,可以直接写答案
void solve(){
char x,y;cin>>x>>y;
int xx=x-'A',yy=y-'A';
int ans=xx+yy;
if(ans<26)cout<<(char)('A'+ans);
else {
ans-=26;
cout<<'B'<<(char)('A'+ans);
}
}
再写了一个可以处理更多字母的:
相当于10进制和26进制的转换,把输出转成字母就好了
int to10(string s){
int ans=0;
for(int i=s.size()-1;i>=0;i--){
ans*=26;
ans+=(s[i]-'A');
}
return ans;
}
string toc(int x){
stack<char>st;
if(x==0){
return "A";
}
while(x) {
st.push((char) ('A' + (x % 26)));
x/=26;
}
string ans="";
while(st.size()){
ans.push_back(st.top());st.pop();
}
return ans;
}
void solve()
{
string a,b;cin>>a>>b;
int aa=to10(a),bb=to10(b);
int c=aa+bb;
cout<<toc(c);
}
C.
因为结果要求排列升序或降序,操作是反转
但是如果不是连续的序列(1,2,3是连续的,1,3,4不是因为1和3相差2)即使反转也没有用
所以遍历,如果不是连续的(后一个数比前一个数大1或小1),就一定要花费1次操作
int a[N];
void solve(){
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int ans=0;
for(int i=2;i<=n;i++){
if(a[i]==a[i-1]-1||a[i]==a[i-1]+1)continue;
else ans++;
}
cout<<ans;
}
K.
自己写的是组合数
ll sq[25];
ll n;
ll C(ll x){
if(x==n)return 1;
ll tmp=n-x;
x=min(tmp,x);
return (sq[n]/sq[n-x]/sq[x]);
}
void solve(){
sq[0]=1;
for(ll i=1;i<=20;i++)sq[i]=sq[i-1]*i;
cin>>n;
ll ans=0;
for(ll i=1;i<=n;i++){
ans+=C(i);
}
cout<<ans;
}
谁成想,pow(2,a)-1一个式子就够了,有被气炸
每道题都有选或不选两种情况就是2^a,减去全都不选这一不合法的情况即为答案
void solve(){
int a;cin>>a;
ll ans=pow(2,a)-1;
cout<<ans<<endl;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现