AtCoder Beginner Contest 198
B - Palindrome with leading zeros
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
//const int mod = 998244353;
const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
int a[maxn];
void solve() {
string s;
cin>>s;
int j=s.size()-1;
while (s[j]=='0') j--;
int f=1;
for (int i = 0; i <=j; ++i) {
if (s[i]!=s[j]) {
f=0;
break;
}
j--;
}
cout<<(f?"Yes":"No")<<"\n";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}
C - Compass Walking
在圈内要两步
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
//const int mod = 998244353;
const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
int a[maxn];
void solve() {
int r,x,y;
cin>>r>>x>>y;
double R=sqrt(x*x+y*y);
if (R<r) cout<<2<<"\n";
else
cout<<ceil(R/(r*1.0))<<"\n";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}
D - Send More Money
dfs
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
//const int mod = 998244353;
const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
int mp[300];
int st[300];
int vis[300];
int sz[11];
int top=0;
int f=0;
string s1,s2,s3;
int l1,l2,l3;
int cal(string s){
int sum=0;
int n=s.size();
for (int i = 0; i < n; ++i) {
sum=sum*10+mp[s[i]];
}
return sum;
}
void dfs(int x){
if (f==1) return;
if (x==top){
if (mp[s1[0]]==0||mp[s2[0]]==0||mp[s3[0]]==0)
return;
int n1=cal(s1);
int n2=cal(s2);
int n3=cal(s3);
if (n1+n2==n3) {
f=1;
for (int i = 0; i < l1; ++i)
cout<<mp[s1[i]];
cout<<"\n";
for (int i = 0; i < l2; ++i)
cout<<mp[s2[i]];
cout<<"\n";
for (int i = 0; i < l3; ++i)
cout<<mp[s3[i]];
return;
}
}
for (int i = 0; i <=9; ++i) {
if (sz[i]) continue;
mp[st[x]]=i;
sz[i]=1;
dfs(x+1);
mp[st[x]]=-1;
sz[i]=0;
}
return;
}
void solve() {
memset(mp,-1,sizeof(mp));
cin>>s1>>s2>>s3;
l1=s1.size();
l2=s2.size();
l3=s3.size();
if (l1==1&&l2==1&&l3==1&&s1==s2&&s2==s3){
cout<<"0\n0\n0\n";
return;
}
for (int i = 0; i < l1; ++i)
if (vis[s1[i]]==0)
vis[s1[i]]=1,st[top++]=s1[i];
for (int i = 0; i < l2; ++i)
if (vis[s2[i]]==0)
vis[s2[i]]=1,st[top++]=s2[i];
for (int i = 0; i < l3; ++i)
if (vis[s3[i]]==0)
vis[s3[i]]=1,st[top++]=s3[i];
if (top>10) {cout<<"UNSOLVABLE";return;}
dfs(0);
if (!f) cout<<"UNSOLVABLE";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
//const int mod = 998244353;
const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
string s[3];
int t[10];
int mp[256];
int cal(string s){
if (t[mp[s[0]]]==0) return -1;
int res=0;
for(auto c:s) res=res*10+t[mp[c]];
return res;
}
void solve() {
memset(mp,-1,sizeof(mp));
int sz=0;
for (int i = 0; i < 3; ++i) {
cin>>s[i];
for(auto c:s[i]){
if (mp[c]==-1) mp[c]=sz++;
}
}
if (sz>10) {cout<<"UNSOLVABLE\n";return;}
for(int i=0;i<10;i++) t[i]=i;
do{
int n[3];
bool ok=0;
for (int i = 0; i < 3; ++i) {
n[i]=cal(s[i]);
if (n[i]<0) ok=1;
}
if (!ok&&n[0]+n[1]==n[2]){
for(int i=0;i<3;i++) cout<<n[i]<<"\n";
return;
}
}while (next_permutation(t,t+10));
cout<<"UNSOLVABLE\n";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}
E - Unique Color
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
//const int mod = 998244353;
const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
int c[maxn];
vector<int > e[maxn];
int vis[maxn];
int g[maxn];
void dfs(int x,int fa){
if (vis[c[x]]==0) g[x]=1;
vis[c[x]]++;
for(auto v:e[x]) if (fa!=v) dfs(v,x);
vis[c[x]]--;
}
void solve() {
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>c[i];
for (int i = 0; i < n - 1; ++i) {
int u,v;
cin>>u>>v;
e[u].push_back(v);
e[v].push_back(u);
}
dfs(1,0);
for (int i = 1; i <=n; ++i)
if (g[i]) cout<<i<<"\n";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}
F - Cube
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
#define int long long
typedef long long LL;
typedef long long ll;
const int INF = 0x3f3f3f3f;
//const int inf = 1e18;
const int mod = 998244353;
//const int mod = 1e9 + 7;
int gcd(int a, int b) { return !b ? a : gcd(b, a % b); }
const int maxn = 1e6 + 10;
const int N = 6e6 + 100;
int inv(int x){
int ret=1,pow=mod-2;
while (pow){
if (pow&1) ret=ret*x%mod;
x=x*x%mod;
pow>>=1;
}
return ret;
}
int c(int n,int m){
int ret=1;
for (int i = n; i >= n-m+1; --i)
(ret*=i)%=mod;
for (int i = 1; i <=m; ++i)
(ret*=inv(i)) %=mod;
return ret;
}
void solve() {
int s,ans=0;
cin>>s;
s-=6;
///1,1,1,1,1,1 * 1
ans=(ans+c((s+5)%mod,5))%mod;
///2,2,2 * 6
if (s%2==0)
ans=(ans+c((s/2+2)%mod,2)*6%mod)%mod;
///3,3 * 8
if (s%3==0)
ans=(ans+(s/3+1)%mod*8%mod)%mod;
///1,1,4 * 6
ans=(ans+(s/4%mod+1)%mod*(s%mod-(s/4)%mod*2+1)%mod*6%mod)%mod;
///1,1,2,2 * 3
ans=(ans+((3*(s+1)%mod-4*(s/2%mod))%mod*(s/2%mod+2)%mod*(s/2%mod+1)%mod*inv(6)%mod)*3)%mod;
cout<<(ans*inv(24)%mod+mod)%mod<<"\n";
}
signed main() {
//ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
// cin >> _;
while (_--) {
solve();//cout<<"\n";
}
return 0;
}