AtCoder Beginner Contest 042
A - Iroha and Haiku (ABC Edition)
#include<bits/stdc++.h>
using namespace std;
int32_t main() {
int a = 2 , b = 1;
for( int i = 1 , x ; i <= 3 ; i ++ ){
cin >> x;
if( x == 5 ) a --;
if( x == 7 ) b --;
}
if( a == b && b == 0 ) printf("YES\n");
else printf("NO");
return 0;
}
B - Iroha Loves Strings (ABC Edition)
简单的给字符串拍个序就好
#include<bits/stdc++.h>
using namespace std;
int32_t main() {
int n , l;
cin >> n >> l;
vector<string> s(n);
for( auto &i : s ) cin >> i;
sort( s.begin() , s.end() , [](string a , string b ){
return a+b < b+a;
});
for( auto i : s )
cout << i;
return 0;
}
C - Iroha's Obsession
其实就是暴力的做一下就好了,把每个数都拆分开判断有没有不喜欢的
#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool vis [15];
int check (int a){
while(a!=0){
int tmp = a%10;
if(vis[tmp] ==true)
return 0;
a/=10;
}
return 1;
}
int main (){
int n , m;
cin >> n >> m;
for (int i = 0;i<m;i++){
int tmp;
cin >> tmp;
vis[tmp] = true;
}
int f = 0;
while(1){
if(f) break;
if(check(n))
f = 1;
n++;
}
cout << n-1;
return 0;
}
D - Iroha and a Grid
这道题算是本场最难的了,其实如果去除左下角不能走的点很简单,就是一共简单的组合数的计算。
从下图我们可以知道,符合要求的任意一种情况都一定是先走到1,2,2中任意一格,然后向下走一步,然后再走到终点,所以我们枚举一下这些点,计算从起点到这里,然后向下走一步,最后再走到终点的情况即可。
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6+5 , mod = 1e9+7;
int fact[N] , invFact[N];
int power( int x , int y ){
int ans = 1;
x %= mod;
while( y ){
if( y & 1 ) ans = ans * x % mod;
x = x * x % mod , y >>= 1;
}
return ans;
}
int inv( int x ){
return power( x , mod-2 );
}
int C( int x , int y ){
return fact[x] * invFact[x-y] % mod * invFact[y] % mod;
}
int cnt( int ax , int ay, int bx , int by ){
return C( bx+by-ax-ay , bx-ax );
}
void init(){
fact[0] = 1 , invFact[0] = inv(1);
for( int i = 1 ; i < N ; i ++ )
fact[i] = fact[i-1] * i % mod , invFact[i] = inv(fact[i]);
return;
}
int32_t main() {
init();
int n , m , a , b , res = 0;
cin >> n >> m >> a >> b;
a = n - a ;
for( int j = b + 1 ; j <= m ; j ++ )
res = ( res + cnt( 1 , 1 , a , j ) * cnt( a+1 , j , n , m ) % mod ) % mod;
cout << res ;
return 0;
}