A. AB Balance
分析:只要第一个和最后一个相同,均满足
#include "bits/stdc++.h" using namespace std; const int maxn=1000+1; string s[maxn]; int main() { //freopen("in.txt","r",stdin); int n; ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++){ cin>>s[i]; int len=s[i].length(); if(s[i][0]==s[i][len-1]) cout<<s[i]<<endl; else{ s[i][len-1]=s[i][0]; cout<<s[i]<<endl; } } return 0; }
B. Update Files
#include "bits/stdc++.h" using namespace std; typedef long long LL; int main() { //freopen("in.txt","r",stdin); int T; ios::sync_with_stdio(false); cin>>T; while(T--){ LL n,k; cin>>n>>k; LL ans=0,cur=1; while(cur<k){ cur<<=1; ans++; } if(cur<n) ans+=(n-cur+k-1)/k; cout<<ans<<endl; } return 0; }
C. Banknotes
分析:贪心,尽可能装小的,第
i
i
i种最多可以装
a
[
i
+
1
]
a
[
i
]
−
1
\frac {a[i+1]}{a[i]} -1
a[i]a[i+1]−1个
#include "bits/stdc++.h" using namespace std; typedef long long LL; const int maxn=10+1; int T,n,k; LL a[maxn]; LL quick_mul(LL a,LL b){ LL res = 1; while(b){ if(b&1) res*=a; a*=a; b>>=1; } return res; } int main() { //freopen("in.txt","r",stdin); ios::sync_with_stdio(false); cin>>T; while(T--){ cin>>n>>k; k++; for(int i=0;i<n;i++){ LL x; cin>>x; a[i] = quick_mul(10LL,x); } LL ans = 0; for(int i=0;i<n;i++){ int cnt = k; if(i!=n-1) cnt=min(cnt,(int)(a[i+1]/a[i]-1)); ans+=1LL*(LL)cnt*a[i]; k-=cnt; } cout<<ans<<endl; } return 0; }