美文网首页
Codeforces Round #434 (Div. 2, b

Codeforces Round #434 (Div. 2, b

作者: _弓长_大人 | 来源:发表于2018-09-25 12:44 被阅读11次

    A. k-rounding
    思路: 求 n和10^k的最小公倍数
    我直接是 乘积除以最小公倍数
    看别人代码有一个是 把乘法换为累加,我觉的还不错。

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<queue>
    #include<iostream>
    #include<cmath>
    using namespace std;
    typedef long long ll;
    ll gcd(ll a,ll b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int main()
    {
        int i,j,t,n;
        ll a,b;
        while(~scanf("%lld%lld",&a,&b))
        {
            if(b==0)
            {
                cout<<a<<endl;
            }
            else
            {
                ll c=1;
                ll tt=b;
                while(tt--)
                {
                    c*=10;
                }
                cout<<a*c/gcd(a,c)<<endl;
            }
        }
        return 0;
    }
    

    B. Which floor?

    #include<bits/stdc++.h>
    using namespace std;
    #define MAX 400005
    typedef long long ll;
    string str;
    int st[200];
    int ed[200];
    int main()
    {
        int k;
        int n;
        while(~scanf("%d %d",&n,&k))
        {
            memset(st,0,sizeof(st));
            memset(ed,0,sizeof(ed));
            cin>>str;
           // str.length();
            for(int i=0;i<str.length();i++)
            {
                if(st[str[i]]==0)
                {
                    st[str[i]]=i+1;
                }
            }
            for(int i=str.length()-1;i>=0;i--)
            {
                if(ed[str[i]]==0)
                {
                    ed[str[i]]=i+1;
                }
            }
            int f=0;
            int cnt=0;
            for(int i=0;i<str.length();i++)
            {
                if(st[str[i]])
                {
                    cnt++;
                    st[str[i]]=0;
                }
                 if(cnt>k)
                {
                    f=1;
                    break;
                }
                if(ed[str[i]]==i+1)
                {
                    cnt--;
                    ed[str[i]]=0;
                }
            }
            if(f)
            {
                cout<<"YES"<<endl;
            }
            else
            {
                cout<<"NO"<<endl;
            }
        }
        return 0;
    }
    

    C. Did you mean...

    昨晚一直wa了,今天看了错误 结果,发现末尾有非法字符,
    if(); 条件后面直接加了 分号,删了就过了 。

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<queue>
    #include<iostream>
    #include<cmath>
    #include<string>
    using namespace std;
    typedef long long ll;
    int vis[200];
    int main()
    {
        vis['a']=1;
        vis['e']=1;
        vis['i']=1;
        vis['o']=1;
        vis['u']=1;
        string s;
        bool tf=true;
        while(cin>>s)
        {
            if(s.length()<3)
            {
                cout<<s<<endl;
            }
            else
            {
          int f=0;
          char c;
          c=s[0];
          if(vis[c])
          {
              f++;
          }
          int i;
          cout<<s[0]<<s[1];
          for(i=2;i<s.length();i++)
          {
              c=s[i];
              if(vis[s[i]]==0&&vis[s[i-1]]==0&&vis[s[i-2]]==0)
              {
                  if(c==s[i-1]&&c==s[i-2])
                  {
                    cout<<s[i];
                  }
                  else
                  {
                      cout<<" "<<s[i];
                      if(i+1<s.length());
                      cout<<s[++i];
                  }
              }
              else{
                cout<<s[i];
              }
    
          }
          cout<<endl;
            }
        }
        return 0;
    }
    
    

    D. Polycarp's phone book
    参照了别人的代码,自己敲了一遍,因为区间不长所以可以暴力区间, 在处理相同字符串有不同 电话号码 映射时,标记为 -1 说明该 字符肯定不符合条件,最后在遍历一遍map 数组,记录长度最短的

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    map<string,int>mapp;
    string ans[70007];
    int main()
    {
        int n;
        string s;
        cin>>n;
    
        for(int ii=1;ii<=n;ii++)
        {
            cin>>s;
            string temp;
            for(int i=0;i<s.length();i++)
            {
                temp="";
                for(int j=i;j<s.length();j++)
                {
                    temp+=s[j];
                    if(mapp[temp]&&mapp[temp]!=ii)
                    {
                        mapp[temp]=-1;
                    }
                    else
                    {
                        mapp[temp]=ii;
                    }
                }
            }
        }
       map<string,int>::iterator it;
        for(it=mapp.begin();it!=mapp.end();it++)
        {
           // cout<<it->second<<" "<<it->first<<endl;
            if(it->second!=-1)
            if(ans[it->second]==""||ans[it->second].size()>((it->first).size()))
               {
                   ans[it->second]=(it->first);
               }
        }
        for(int i=1;i<=n;i++)
        {
            cout<<ans[i]<<endl;
        }
    
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:Codeforces Round #434 (Div. 2, b

          本文链接:https://www.haomeiwen.com/subject/koxbsxtx.html