小写字母输出a,大写字母输出A。
直接做即可。
int main(){
char c;
cin>>c;
if(c>='A'&&c<='Z'){
cout<<"A";
}
else cout<<"a";
}
给一个长度为N的数组,要求选K个数,求选的K个数的和的最小值。 N , K < = 1000 N,K<=1000 N,K<=1000
排序贪心直接做。
int q[N];
char s[N];
map<int,int>mp,vis;
int main(){
int n;
n=read();
int k;
k=read();
rep(i,1,n){
q[i]=read();
}
sort(q+1,q+1+n);
int sum=0;
rep(i,1,k){
sum+=q[i];
}
cout<<sum;
}
有若干条小狗,第 1 1 1个小狗名字是 a a a,第 2 2 2个是 b b b,第27个是 a a aa aa…第 702 702 702个是 z z zz zz,询问第 N N N条小狗的名字是什么。 1 ≤ N ≤ 1000000000000001 1≤N≤1000000000000001 1≤N≤1000000000000001
通过题意不难发现,小狗的编号等于小狗的名字在非严格二十六进制下的转换。用第 702 702 702条小狗举例子,即 ( s [ 1 ] − a + 1 ) ∗ 26 + ( s [ 2 ] − a + 1 ) = 26 ∗ 26 + 26 = 676 + 26 = 702 (s[1]-a+1)*26+(s[2]-a+1)=26*26+26=676+26=702 (s[1]−a+1)∗26+(s[2]−a+1)=26∗26+26=676+26=702 。可以发现每一项的系数可以达到 26 26 26,所以并不是严格意义上的 26 26 26进制。所以我们在每一次处理余数前,对 N N N值 − 1 -1 −1即可解决非严格进制的问题。
int q[N];
map<int,int>mp,vis;
string s="abcdefghijklmnopqrstuvwxyz";
int main(){
ll n;
n=read();
string ans;
while(n){
n--;//每一次求余数前的处理
ans+=s[n%26];
n/=26;
}
reverse(ans.begin(),ans.end());//翻转输出
cout<<ans;
return 0;
}
给定一个长度为 N N N的数组 A 1 , A 2 . . . A n A_1,A_2...A_n A1,A2...An。执行 Q Q Q次操作,每次操作给定两个数 B i , C i B_i ,C_i Bi,Ci,即将 A A A数组中所有的 B i Bi Bi值全部换为 C i Ci Ci.要求输出每次操作后 A A A数组的权值和。
输入时预处理拿桶预处理一下每个数出现的次数和前缀和 s u m sum sum,每次操作后维护 s u m sum sum和桶,模拟即可,注意会爆 i n t int int。
ll q[N];
map<ll,ll>mp,vis;
int main(){
int n;
n=read();
ll sum=0;
rep(i,1,n){
q[i]=read();
mp[q[i]]++;//维护桶
sum+=q[i];//维护前缀和
}
int m;
m=read();
ll l,r;
rep(i,1,m){
scanll2(l,r);
sum-=mp[l]*l;//维护前缀和
mp[r]+=mp[l];//维护桶
sum+=mp[l]*r;//维护前缀和
cout<<sum<<endl;
mp[l]=0;//维护桶
}
return 0;
}
有 N N N只猫,每一只猫拥有两种数字,第 i i i只猫手里掌握着数字 a i a_i ai,定义每一只猫手里的数字 a i = ( b 1 ⊕ b 2 ⊕ . . . ⊕ b i − 1 ⊕ b i + 1 ⊕ b i + 2 ⊕ . . . ⊕ b n ) a_i=(b_1 \oplus b_2 \oplus... \oplus b_{i-1}\oplus b_{i+1} \oplus b_{i+2}\oplus...\oplus b_n) ai=(b1⊕b2⊕...⊕bi−1⊕bi+1⊕bi+2⊕...⊕bn)。给出数组 a a a,要求输出数组 b b b。 2 ≤ N ≤ 200000 2≤N≤200000 2≤N≤200000 N N N是偶数。
观察可得,
( a 1 ⊕ a 2 ⊕ a 3 ⊕ . . . ⊕ a n ) = ( b 1 ⊕ . . . ⊕ b 1 ) ⏟ n − 1 个 ⊕ . . . ⊕ ( b n ⊕ . . . ⊕ b n ) ⏟ n − 1 个 = ( b 1 ⊕ . . . ⊕ b n ) (a_1 \oplus a_2 \oplus a_3 \oplus...\oplus a_n)=\begin{matrix} \underbrace{ (b_1 \oplus ...\oplus b_1) } \\ n-1个 \end{matrix} \oplus ...\oplus \begin{matrix} \underbrace{ (b_n \oplus ...\oplus b_n) } \\ n-1个 \end{matrix}=(b_1 \oplus ...\oplus b_n) (a1⊕a2⊕a3⊕...⊕an)= (b1⊕...⊕b1)n−1个⊕...⊕ (bn⊕...⊕bn)n−1个=(b1⊕...⊕bn)
由题意可得, b i = ( b 1 ⊕ . . . ⊕ b n ) ⊕ a i b_i=(b_1 \oplus ...\oplus b_n) \oplus a_i bi=(b1⊕...⊕bn)⊕ai
即 b i = ( a 1 ⊕ a 2 ⊕ a 3 ⊕ . . . ⊕ a n ) ⊕ a i b_i=(a_1 \oplus a_2 \oplus a_3 \oplus...\oplus a_n) \oplus a_i bi=(a1⊕a2⊕a3⊕...⊕an)⊕ai
求出 a a a数组的异或前缀和,运用推导出的结论即可。
int q[N];
int main(){
int n;
n=read();
rep(i,1,n){
q[i]=read();
}
ll sum=q[1];
rep(i,2,n){
sum^=q[i];//异或前缀和
}
rep(i,1,n){
cout<<(sum^q[i])<<" ";//公式
}
return 0;
}