Educational Codeforces Round 122 (Rated for Div. 2) A-D题解

Posted ZZXzzx0_0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Educational Codeforces Round 122 (Rated for Div. 2) A-D题解相关的知识,希望对你有一定的参考价值。

A. Div. 7

思路
注 意 n > = 10 , 说 明 一 定 是 两 位 数 注意n>=10,说明一定是两位数 n>=10
并 且 7 个 一 循 环 , 直 接 枚 举 这 位 数 的 最 后 一 位 并且7个一循环,直接枚举这位数的最后一位 7
暴 力 判 断 是 否 可 行 即 可 暴力判断是否可行即可
时间复杂度 O t Ot Ot

#include <bits/stdc++.h>
#define fer(i,a,b) for(re i = a ; i <= b ; ++ i)
#define der(i,a,b) for(re i = a ; i >= b ; -- i)
#define cf int _; cin>> _; while(_--)
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define sf(x) scanf("%lld",&x)
#define pll pair<int,int> 
#define re register int
#define lb lower_bound
#define ub upper_bound
#define int long long 
#define pb push_back
#define y second 
#define x first 
using namespace std;
inline void sf2(int &a , int &b)  sf(a) , sf(b) ;
inline void sf3(int n , int a[]) fer(i,1,n) sf(a[i]); ;
inline void de(auto x) cout << x << "\\n" ;
inline void de2(auto a , auto b) cout << a << " " << b << "\\n" ;
inline void de3(int n , auto a[])fer(i,1,n) cout << a[i] << " " ;puts("");
inline void mo(int &a , int b) a = (a % b + b) % b ;
inline int gcd(int a,int b)return b ? gcd(b , a % b) : a ;
inline int qpow(int a,int b,int c)int res=1%c;a%=c;while(b>0)if(b&1)res=res*a%c;a=a*a%c;b>>=1;return res;
inline int qadd(int a,int b,int c)int res=0;a%=c;while(b>0)if(b&1)res=(res+a)%c;a=(a+a)%c;b>>=1;return res; 
const int inf = 0x3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f ;
const int N = 1e6 + 10 , M = 3010 , mod = 1e9 + 7 ;
const double eps = 1e-7 , pi = acos(-1.0) ;
 
signed main()

    cf
    
        int n ;
        cin >> n ;
        if(n % 7 == 0) de(n) ;
        else
        
            string s = to_string(n) ;
            
            for(char i = '0' ; i <= '9' ; i ++)
            
                s[sz(s) - 1] = i ;
                if(stoi(s) % 7 == 0)
                
                    de(s) ;
                    break ;
                
            
        
    
    return 0;

B. Minority

思路
假 设 该 字 符 串 0 的 数 量 为 a 假设该字符串0的数量为a 0a
1 的 数 量 为 b 1的数量为b 1b
如 果 a = b , 显 然 答 案 为 m a x ( a − 1 , 0 ) 如果a=b,显然答案为max(a-1,0) a=bmax(a1,0)
如 果 a > b , 答 案 为 b 如果a>b,答案为b a>bb
如 果 a < b , 答 案 为 a 如果a<b,答案为a a<ba
时间复杂度 O n On On

#include <bits/stdc++.h>
#define fer(i,a,b) for(re i = a ; i <= b ; ++ i)
#define der(i,a,b) for(re i = a ; i >= b ; -- i)
#define cf int _; cin>> _; while(_--)
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define sf(x) scanf("%lld",&x)
#define pll pair<int,int> 
#define re register int
#define lb lower_bound
#define ub upper_bound
#define int long long 
#define pb push_back
#define y second 
#define x first 
using namespace std;
inline void sf2(int &a , int &b)  sf(a) , sf(b) ;
inline void sf3(int n , int a[]) fer(i,1,n) sf(a[i]); ;
inline void de(auto x) cout << x << "\\n" ;
inline void de2(auto a , auto b) cout << a << " " << b << "\\n" ;
inline void de3(int n , auto a[])fer(i,1,n) cout << a[i] << " " ;puts("");
inline void mo(int &a , int b) a = (a % b + b) % b ;
inline int gcd(int a,int b)return b ? gcd(b , a % b) : a ;
inline int qpow(int a,int b,int c)int res=1%c;a%=c;while(b>0)if(b&1)res=res*a%c;a=a*a%c;b>>=1;return res;
inline int qadd(int a,int b,int c)int res=0;a%=c;while(b>0)if(b&1)res=(res+a)%c;a=(a+a)%c;b>>=1;return res; 
const int inf = 0x3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f ;
const int N = 1e6 + 10 , M = 3010 , mod = 1e9 + 7 ;
const double eps = 1e-7 , pi = acos(-1.0) ;
 
signed main()

    cf
    
        string s ;
        
        int s1 = 0 , s2 = 0 ;
        
        cin >> s ;
        
        for(auto i : s)
        
            if(i == '1') s1 ++ ;
            else s2 ++ ;
        
        
        if(s1 == s2) de(max(s1 - 1 , 0ll)) ;
        else if(s1 > s2) de(s2) ;
        else de(s1) ;
    
    return 0;

C. Kill the Monster

思路
注 意 到 k 的 总 和 为 2 e 5 注意到k的总和为2e5 k2e5
那 么 我 们 可 以 枚 举 生 命 h c 加 i 次 , 攻 击 d c 加 k − i 次 那么我们可以枚举生命hc加i次,攻击dc加k-i次 hci,dcki
o 1 判 断 即 可 o1判断即可 o1
时 间 复 杂 度 o k 时间复杂度ok ok

如 何 o 1 判 断 如何o1判断 o1
敌 人 杀 死 我 需 要 ⌈ h c d m ⌉ 个 回 合 敌人杀死我需要\\lceil \\frachcdm \\rceil个回合 dmhc
我 杀 死 敌 人 需 要 ⌈ h m d c ⌉ 个 回 合 我杀死敌人需要\\lceil \\frachmdc \\rceil个回合 dchm
即 即
⌈ h c d m ⌉ > = ⌈ h m d c ⌉ \\lceil \\frachcdm \\rceil >= \\lceil \\frachmdc \\rceil Educational Codeforces Round 7 A

Educational Codeforces Round 7

Educational Codeforces Round 90

Educational Codeforces Round 33

Codeforces Educational Codeforces Round 54 题解

Educational Codeforces Round 27