• AtCoder Beginner Contest 071


    第二次打日服。。。

    感觉比较水。因为聚会的原因,还几十分钟结束的时候才打开电脑。

    D题就没看。难度不知。

    题目链接http://abc071.contest.atcoder.jp/

    ABC都水题。

    C题因为数据比较大,不知道为什么用long long 有点问题,赛后发现是x,y用的是int 相乘会溢出了。比赛的时候用的是大数乘法。

    A题代码:

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<string.h>
     5 #include<math.h>
     6 using namespace std;
     7 int main(){
     8     int a,b,x;
     9     while(~scanf("%d%d%d",&x,&a,&b)){
    10         int alen=abs(a-x);
    11         int blen=abs(b-x);
    12         if(alen>blen)cout<<'B'<<endl;
    13         else cout<<'A'<<endl;
    14     }
    15     return 0;
    16 }

    B题代码:

    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    #include<math.h>
    using namespace std;
    int flag[30];
    int main(){
        char s[100500];
        cin>>s;
        memset(flag,0,sizeof(flag));
        for(int i=0;i<strlen(s);i++){
            flag[s[i]-'a']++;
        }
        int cnt=0;
        for(int i=0;i<26;i++){
            if(flag[i]==0){
                cout<<(char)(i+'a')<<endl;
                cnt++;
                break;
            }
        }
        if(!cnt) cout<<"None"<<endl;
        return 0;
    }

    C题代码:

     1 /*
     2 改后的代码
     3 */
     4 #include<iostream>
     5 #include<stdio.h>
     6 #include<string.h>
     7 #include<algorithm>
     8 using namespace std;
     9 long long int  a[100500];
    10 int flag[100500];
    11 bool cmp(int a,int b){
    12     return a>b;
    13 }
    14 int main(){
    15     int n;
    16     cin>>n;
    17     for(int i=0;i<n;i++){
    18         scanf("%d",a+i);
    19     }
    20     memset(flag,0,sizeof(flag));
    21     sort(a,a+n,cmp);
    22     long long int  x,y;
    23     x=y=0;
    24     int fg=0;
    25     for(int i=0;i<n-1;i++){
    26         if(a[i]==a[i+1]&&!flag[i]){
    27             if(!x) x=a[i];
    28             else{
    29                 y=a[i];
    30                 break;
    31             }
    32             flag[i]=1;
    33             flag[i+1]=1;
    34         }
    35     }
    36     long long int  sum;
    37     sum=x*y;
    38     cout<<sum<<endl;
    39     return 0;
    40 }
     1 /*
     2 大数乘法代码
     3 */
     4 #include<iostream>
     5 #include<stdio.h>
     6 #include<string.h>
     7 #include<algorithm>
     8 using namespace std;
     9 int a[100500];
    10 int flag[100500];
    11 bool cmp(int a,int b){
    12     return a>b;
    13 }
    14 string sum(string s1,string s2)
    15 {
    16     if(s1.length()<s2.length())
    17     {
    18         string temp=s1;
    19         s1=s2;
    20         s2=temp;
    21     }
    22     int i,j;
    23     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
    24     {
    25         s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));   //注意细节
    26         if(s1[i]-'0'>=10)
    27         {
    28             s1[i]=char((s1[i]-'0')%10+'0');
    29             if(i) s1[i-1]++;
    30             else s1='1'+s1;
    31         }
    32     }
    33     return s1;
    34 }
    35 string Mult(string s,int x)
    36 {
    37     reverse(s.begin(),s.end());
    38     int cmp=0;
    39     for(int i=0;i<s.size();i++)
    40     {
    41         cmp=(s[i]-'0')*x+cmp;
    42         s[i]=(cmp%10+'0');
    43         cmp/=10;
    44     }
    45     while(cmp)
    46     {
    47         s+=(cmp%10+'0');
    48         cmp/=10;
    49     }
    50     reverse(s.begin(),s.end());
    51     return s;
    52 }
    53 string Multfa(string x,string y)  //大数乘法
    54 {
    55     string ans;
    56     for(int i=y.size()-1,j=0;i>=0;i--,j++)
    57     {
    58         string tmp=Mult(x,y[i]-'0');
    59         for(int k=0;k<j;k++)
    60             tmp+='0';
    61         ans=sum(ans,tmp);
    62     }
    63     return ans;
    64 }
    65 int main(){
    66     int n;
    67     cin>>n;
    68     for(int i=0;i<n;i++){
    69         scanf("%d",a+i);
    70     }
    71     memset(flag,0,sizeof(flag));
    72     sort(a,a+n,cmp);
    73     int x,y;
    74     x=y=0;
    75     int fg=0;
    76     for(int i=0;i<n-1;i++){
    77         if(a[i]==a[i+1]&&!flag[i]){
    78             if(!x) x=a[i];
    79             else{
    80                 y=a[i];
    81                 break;
    82             }
    83             flag[i]=1;
    84             flag[i+1]=1;
    85         }
    86     }
    87     char x1[15],y1[15];
    88     sprintf(x1,"%d",x);
    89     sprintf(y1,"%d",y);
    90     string s=Multfa(x1,y1);
    91     cout<<s<<endl;
    92     return 0;
    93 }

    这代码长度~汗~

  • 相关阅读:
    存储过程中调用webservice
    设计模式学习笔记——桥接模式(Bridge Patten)
    设计模式学习笔记——修饰模式(Decorator Pattern)
    设计模式学习笔记——单件模式(Singleton Pattern)
    设计模式学习笔记——建造者模式(Builder Pattern)
    设计模式学习笔记——工厂方法(Factory Method)
    设计模式学习笔记——简单工厂(Simple Factory)
    设计模式学习笔记——适配器模式(Adapter Patten)
    设计模式学习笔记——抽象工厂(Abstract Factory)
    存储过程使用shell脚本执行sql文件
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/7401675.html
Copyright © 2020-2023  润新知