第十八次CCF计算机软件能力认证-ABC

能力有限,DE不会。。。
A
数很小 直接暴力for过去,注意是数了多少个数,不是数到第几个数字,输出的时候注意顺序。
code

// INFO BEGIN
//
// User = 201911501351(王智峰) 
// Group = C/C++ 
// Problem = 报数 
// Language = CPP11 
// SubmitTime = 2019-12-15 13:41:47 
//
// INFO END

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define EXP 1e-8
#define MOD 1e9+7
#define N 1000
#define M 100

bool find7(int t){
    if(t%7==0)return true;
    while(t){
        if(t%10==7)return true;
        t/=10;
    }
    return false;
}

int main(){
    int n;
    cin>>n;
    int arr[4]={0};
    int t=0;
    for(int i=1;i<=n;i++){
        t++;
        while(find7(t)){
            arr[t%4]++;
            t++;
        }
    }
    cout<

B 一个模拟,注意位置可能很大,二维数组别想了(不MLE也会TLE),方法很多,有的用map,有的搞哈希。我的做法比较捞,n很小,所以我两层循环暴力for过去,判断每个有垃圾的位置的状态,做个统计就行了。
code:

// INFO BEGIN
//
// User = 201911501351(王智峰) 
// Group = C/C++ 
// Problem = 回收站选址 
// Language = CPP11 
// SubmitTime = 2019-12-15 16:32:55 
//
// INFO END

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define EXP 1e-8
#define MOD 1e9+7
#define N 1000
#define M 100

int n;
int pos[1005][2];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>pos[i][0]>>pos[i][1];
    }
    int numb,numb2;
    int ans[5]={};
    for(int i=1;i<=n;i++){
        numb=0;
        numb2=0;
        for(int j=1;j<=n;j++){
            if(abs(pos[i][0]-pos[j][0])<=1&&
               abs(pos[i][1]-pos[j][1])<=1){
                numb++;
            }
            if(abs(pos[i][0]-pos[j][0])==1&&
               abs(pos[i][1]-pos[j][1])==0){
                numb2++;
            }
            if(abs(pos[i][0]-pos[j][0])==0&&
               abs(pos[i][1]-pos[j][1])==1){
                numb2++;
            }
        }
        if(numb2==4){
            ans[numb-5]++;
        }
    }
    cout<

C
模拟题,照着题中的意思一直敲就行,我的思路就是拆解,等号拆一下,加号拆一下,剩下的就是一个带括号的表达式了,碰见括号就在递归一次,最后统计没有括号的元素的个数就妥了,(本来准备用map写的,后来忘了咋遍历map了,临时搞了个哈希凑合A了,丢人.jpg)。还有个思路是碰见元素就算一下,最后统计。感谢出题人提供的数据,帮我找出来好多BUG。
code:

// INFO BEGIN
//
// User = 201911501351(王智峰) 
// Group = C/C++ 
// Problem = 化学方程式 
// Language = CPP11 
// SubmitTime = 2019-12-15 17:27:15 
//
// INFO END

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define EXP 1e-8
#define MOD 1e9+7
#define N 1000
#define M 100
int mp[900];

void cal2(string s,int numb){
    //cout<<"cal2:"<='0'&&s[i]<='9'){
        t*=10;
        t+=s[i++]-'0';
    }
    if(t==0)t=1;
    numb*=t;

    for(;i='0'&&s[i]<='9'){
                ttt*=10;
                ttt+=s[i++]-'0';
            }
            if(ttt==0)ttt=1;
            cal2(s.substr(pos,pos2-pos+1),numb*ttt);
        }
        else{
            if(i='a'&&s[i+1]<='z'){
                int ttt=0;
                int u=i;
                i+=2;
                while(i='0'&&s[i]<='9'){
                    ttt*=10;
                    ttt+=s[i++]-'0';
                }
                if(ttt==0)ttt=1;
                //cout<='0'&&s[i]<='9'){
                    ttt*=10;
                    ttt+=s[i++]-'0';
                }
                if(ttt==0)ttt=1;
                //cout<>n;
    while(n--){
        cin>>s;
        int l=s.size();
        for(int i=0;i

E
不会,不过我过了两个测试点,交上来丢个人

// INFO BEGIN
//
// User = 201911501351(王智峰) 
// Group = C/C++ 
// Problem = 魔数 
// Language = CPP11 
// SubmitTime = 2019-12-15 16:44:28 
//
// INFO END

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace std;

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define EXP 1e-8
#define MOD 1e9+7
#define N 1000
#define M 100

int main(){
    int n,q;
    cin>>n>>q;
    if(q==1){
        int l,r;
        cin>>l>>r;
        int s=(l+r)*(r-l+1)/2;
        cout<

最后说一下打CCF的感受吧,AB签到题,但是容易丢分(菜鸟ACM选手的宿命),C是大模拟,D小算法,E大算法。C有沉下心来有把握AC,但考验码力和细心。DE是考验算法能力的,D有时候也会带一些模拟的成分。虽然DE很难AC,不过可以混测试点(准备CCF的一定要记得看下面的测试点啊啊啊啊啊,CCF不是ACM,除了0和100以外有其他中间态!!!),毕竟子任务会简单很多。
CCF十七次后可以下载答卷了,赞。

你可能感兴趣的:(第十八次CCF计算机软件能力认证-ABC)