美文网首页
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