zoukankan      html  css  js  c++  java
  • Codeforces Round#434 DIV.2

    第一次打Codeforces,然而时差问题不允许, 掉了分, 下次换个号。 
    今天写写水题发题解。
    原比赛链接http://codeforces.com/contest/861   看了可以强行提升英文阅读水平
    ProblemA  K-rounding

    题目大意是有正整数 N (N<=1e9) ,K (0=<K<=8) ,找一个末尾有K个零的数 且是N的整数倍
    超简单,答案是 lcm(N,10^K) 

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    long long n,k;
    long long gcd(long a,long b){
        return a%b==0?b:gcd(b,a%b);
    }
    int main(){
        cin>>n>>k;
        int p=1;
        while(k--)p*=10;
        long long ans=0;
        ans=n*p/gcd(n,p);
        cout<<ans;
        return 0;
    }
    A

    ProblemB  Which floor ?

    有一栋楼,每层的房间数相同,不知道每层有多少房间,已知房间的编号是按层次的顺序向上标的 (比如每层楼有三个房间,那么1,2,3号房间在第一层,4,5,6在第二层……)
    下面给你M(M<=100)条信息,每条信息告诉你第ki个房间属于第fi层, 问题是求出第N(N<=100)个房间在第几层,如果判断不了就输出-1
    这个可怜的数据范围, 就暴力枚举每层有多少房间,之后模拟,没了

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,m;
     4 int main(){
     5     int ans=-1,l=1,r=101;
     6     int x=0,y=0;
     7     scanf("%d%d",&n,&m);
     8     for(int i=1;i<=m;i++){
     9         cin>>x>>y;
    10         if(y==1)l=max(l,x);
    11         else{
    12             l=max(l,x/y+(x%y==0?0:1));
    13             r=min(r,(x-1)/(y-1));
    14         }
    15     }
    16     for(int i=l;i<=r;i++)
    17     {
    18         int x=n/i+(n%i==0?0:1);
    19         if(ans==-1)ans=x;
    20         else if(ans!=x){cout<<-1;return 0;}
    21     }
    22     cout<<ans;
    23 }
    B

    ProblemC Did you mean ?

    把一个只含有小写字母的字符串分割成若干个合法的串,不合法串定义为 : 1.至少有连续的三个辅音字母(除了a e i o u)2.连续的辅音字母中至少有两个不同
    简单的模拟,边读入边输出,累加连续的辅音字母个数,不合法就输出空格 。 注意一下赋的初值 ,还有过程中的小细节, 不然会被气死的

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 char s[3005];
     4 int n;
     5 int len;
     6 bool flag; 
     7 int main(){
     8     scanf("%s",s+1);
     9     n=strlen(s+1);
    10     for(int i=1;i<=n;i++){
    11     if(s[i]!='a'&&s[i]!='e'&&s[i]!='i'&&s[i]!='o'&&s[i]!='u')
    12     {
    13         if(len&&s[i-1]!=s[i])flag=1;
    14         if(flag&&len>=2)
    15         {
    16         printf(" ");
    17         flag=0;    
    18         len=1;
    19         }
    20         else len++;
    21         printf("%c",s[i]); 
    22     }
    23     else
    24     {
    25         flag=0;
    26         len=0;
    27         printf("%c",s[i]);
    28     }
    29     }
    30     return 0;
    31 } 
    C

    Problem D Polycarp's phone book

    题意:有一个电话本(只有九个数字),输出每个字符串的一个子串,这个子串满足在其他串中没有出现过。

    水题一个,字符串hash丢进map里。

    #include<bits/stdc++.h>
    #include<map>
    #include<algorithm>
    using namespace std;
    typedef long long ll;
    map<ll,int> m;
    map<ll,int> S;
    int cnt;
    char s[70001][10];
    int n,len[70001];
    ll work(int i,int j,int k)
    {
        ll sum=0;
        for(j;j<=k;++j)
        sum=sum*11+s[i][j]-'0'+1;
        return sum;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
        {
            scanf("%s",s[i]);len[i]=strlen(s[i]);
            for(int j=0;j<len[i];++j)
                for(int k=j;k<len[i];++k)
                ++m[work(i,j,k)];
        }
        for(int i=1;i<=n;++i)
        {
            S.clear();
            int ans=11,l=0;
            for(int j=0;j<len[i];++j)
                for(int k=j;k<len[i];++k)
                {
                    int tmp=work(i,j,k);
                    ++S[tmp];
                    if(S[tmp]==m[tmp]) {if(ans>k-j+1) {ans=k-j+1;l=j;}}
                }
            for(int j=l;j<=l+ans-1;++j)
            putchar(s[i][j]);
            putchar('
    ');
        }
    }
    D
  • 相关阅读:
    欧拉回路一个定理的证明
    NOIP2018 初赛数学第二题解析
    linux 减少Terminal路径的方法
    网络挖坑
    linux 记录
    河南游记 Day0

    NOI2018 Day 1 你的名字
    大佬的几行fastIO
    Codeforces 781B. Innokenty and a Football League
  • 原文地址:https://www.cnblogs.com/Elfish/p/7541971.html
Copyright © 2011-2022 走看看