题意:给a,b求按照规定 把a变成b所需的最小步数
规定:1. a=a/2 a为偶数情况下
2.a+1;
如果a<b sum=b-a;
如果a>b 通过一系列变化最后可能a=b也可能a<b 所以最后面有个sum+=b-a
#include<cmath> #include<string> #include<algorithm> #include<iostream> using namespace std; int main(){ int a,b,sum=0; cin>>a>>b; if(a<b){ sum=b-a; }else{ while(a>b){ if(a&1){ a=(a+1)/2; sum+=2; }else{ a=a/2; sum++; } } sum+=b-a; } cout<<sum<<endl; return 0; }
题意:定义一个没有包含重复字符的字符串为彩虹字符串,现给出一个长度不超过的字符串,
求出其可以作为彩虹字符串的子序列数,对答案取模
与求一个整数的正因子个数类似,把每个不同字母看成不同的因子
这好像是一个算法最后答案使(1+a[1])*(1+a[2])…*(1+a[n])
include<iostream> #include<cmath> #include<cstdio> #include<string> #include<algorithm> #include<cstring> #include<set> using namespace std; typedef long long ll; #define mod 11092019 int a[30]; int main(){ int i,j; ll sum=1; string s; cin>>s; int len=s.length(); for(i=0;i<len;i++){ a[s[i]-‘a‘]++; } for(j=0;j<26;j++){ sum=sum%mod*(a[j]+1)%mod; } cout<<sum%mod<<endl; return 0; }
2020/5/4 ICPC Pacific Northwest Regional Contest 2019
原文:https://www.cnblogs.com/yy0826/p/12865677.html