CTU Open Contest 2019 AB题

小菜鸡飘过

A: Beer Barrels

题意:给出四个整数:A,B,K,C,;A,B,C都是大于0的个位数,问在所有仅有A或者B组成的K位数中,数字C的个数是多少

思路:

1.先考虑特殊情况:

(1) 如果C不是A或者B 则输出0

(2) 如果K = 0 则输出0

(3) 如果A==B 则输出K

2.再考虑一般情况:

共K位,每位都可能有C,求出共有多少种可能,排列组合问题。

多个 C(i,k)*I 相加

阶乘可以用数组模拟;用快速幂求逆元

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll pow(ll a,ll b,ll mod)
{
    ll ans = 1;
    while(b!=0)
    {
        if(b%2==1) ans=(a%mod*ans%mod)%mod;

        a = (a%mod*a%mod)%mod;
        b = b/2;
    }
    return ans%mod;

}
int main()
{
    ll mod = 1000000007;
    ll a,b,k,c;
    cin>>a>>b>>k>>c;
    if(k==0) cout<<"0"<<endl;
    else if(a==b) cout<<k<<endl;
    else if(c!=a&&c!=b) cout<<"0"<<endl;
    else
    {
        ll f[1010];
        f[0] = 1;
        for(int i=1;i<=1000;i++)
        {
            f[i] = (f[i-1]*i)%mod;
        }
        ll ans = 0;
        for(int i=1;i<=k;i++)
        {
            ll t = (i%mod*f[k]%mod* pow(f[i],mod-2,mod)%mod * pow(f[k-i],mod-2,mod)%mod)%mod;
            ans = (ans%mod +t%mod)%mod;
        }
        cout<<ans<<endl;

    }
    return 0;
}

B: Beer Bill

题意:计算字符串的价格,给多个字符串,每个占一行,一种字符串名叫Raked Line 只含有C个‘|’字符,这种字符价格定义为42*C,另一种叫 Priced Line,格式以数字开头,中间用“,-”连接,结尾是连续的C个‘|’,这种字符串的价格定义为price*C,若结尾没有‘|’出现则C默认为一个,计算所有字符串的总价,总价向上去整到10的倍数。

思路:通过第一个字符判断是第一种还是第二种,在按要求输出(四舍五入到最接近10的倍数)

AC代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {

    string s;
    int ans = 0;
    while(cin>>s)
    {
        int count = 0;
        if(s[0]==‘|‘)
        {
            count = 42*s.length();
        }else{
            int x = 0;
            int sum = 1;
            for(int i=0;i<s.length();i++){
                if(s[i]>=‘0‘&&s[i]<=‘9‘){
                    x = x*10+(s[i]-‘0‘);
                }
                if(s[i]==‘|‘) sum++;
            }
            if(sum!=1) sum--;
            count = x*sum;

        }
        ans+=count;

        }
    if(ans%10!=0)
    {
        int t = ans/10+1;
        ans = t*10;
    }
    cout<<ans<<",-"<<endl;

    return 0;
}

原文地址:https://www.cnblogs.com/subject/p/12374760.html

时间: 2024-08-09 02:45:32

CTU Open Contest 2019 AB题的相关文章

[ICPC训练联盟周赛1] CTU Open Contest 2019

昨天ICPC训练联盟进行了第一场比赛,题目是CTU Open Contest 2019,烟台大学给出了解析. 题目和题解在此(提取码zre3) 我和索队还有yz组队,喊着队友nb就AK了,抱大腿真爽. A题是简单的组合数学,显然有公式 \(1\times C_n^1+2\times C_n^2+ \dots + n \times C_n^n=n \times 2^{n-1}\) 但忘了考虑\(n=0\)的情况,我wa了一发. B题题目我不太读得懂,yz A的. C题是算圆和矩形相交的面积,我抄了

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

[AtCoder] NIKKEI Programming Contest 2019 (暂缺F)

[AtCoder] NIKKEI Programming Contest 2019 ??本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder. A - Subscribers ??首先始终 \(max = \min(A, B)\) ,\(min\) 的话如果 \(A + B \leq N\) ,那么就是 \(0\) ,否则就是 \(A + B - N\) . int n, a, b; int main() { read(n), read

【AtCoder】Tenka1 Programmer Contest 2019

Tenka1 Programmer Contest 2019 C - Stones 题面大意:有一个01序列,改变一个位置上的值花费1,问变成没有0在1右边的序列花费最少多少 直接枚举前i个都变成0即可 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space

Helvetic Coding Contest 2019 差A3 C3 D2 X1 X2

Helvetic Coding Contest 2019 A2 题意:给一个长度为 n 的01序列 y.认为 k 合法当且仅当存在一个长度为 n 的01序列 x,使得 x 异或 x 循环右移 k 位的 01 串得到 y .问合法的 k 的个数. \(n \le 2*10^5\) key:找规律 考虑如何check一个 k 是否合法.那么对于所有的 i 和 i-k 在模 n 的意义下,如果 y 的第 i 位为 0 则二者必须不同,否则必须相同.这样可以用并查集判断是否合法.实际上是把相同的缩起来后

(寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)

layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces - DP - 状态压缩 - LCA 传送门 付队! C - Greetings! (状态压缩) 题意 给N种信件,你可以任意选择K种信封装信件,问你最少的浪费是多少 不能大的信件装

2020/3/14 Preliminaries for Benelux Algorithm Programming Contest 2019 部分补题报告和解题报告

A. Architecture 比较行列最大值相同则possible 不同则impossible #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> using namespace std; int main(){ int r,c,x,y,i; int maxx=0,maxy=0; cin>>r>>c; for(i=1;i<=r;i++)

CTU Open Contest 2017 Go Northwest!(思维题+map)

题目: Go Northwest! is a game usually played in the park main hall when occasional rainy weather discourages the visitors from enjoying outdoor attractions. The game is played by a pair of players and it is based entirely on luck, the players can hardl

2019 Multi-University Training Contest 1 (补题)

1001.Blank 题意:给一列数组填四种数,使得每个给定第$i$个的区间数的种类刚好有$x_{i}$种 我的思路:dp,状态排完序后是四种数最后的位置,转移时判断合法性即可(卡常有点厉害) 代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int N = 1e2 + 5; 5 const int MOD = 998244353; 6 7 int dp[2][N][N][N]; 8 int a[N][10]; 9