• BestCoder 2nd Anniversary/HDU 5718 高精度 模拟


    Oracle

    Accepts: 599
    Submissions: 2576
    Time Limit: 8000/4000 MS (Java/Others)
    Memory Limit: 262144/262144 K (Java/Others)
    问题描述
    曾经有一位国王,统治着一片未名之地。他膝下有三个女儿。
    
    三个女儿中最年轻漂亮的当属Psyche。她的父亲不确定她未来的命运,于是他来到Delphi神庙求神谕。
    
    神谕可以看作一个不含前导零的正整数n n n。
    
    为了得到真正的预言,他可以将n n n的各个数位重新排列,并将其分成两个不含前导零的正整数。
    
    请你帮助他求出这两个正整数最大的和。如果不存在这样的两个正整数,输出"Uncertain".
    输入描述
    第一行一个整数T  (1≤T≤10) (1 le T le 10) (1T10),代表数据组数。
    
    接下来T 行,每行一个正整数n (1≤n<1010000000) (1 le n < 10 ^ {10000000}) (1n<1010000000​​)。
    输出描述
    对于每组数据,输出一个整数表示最大的和。若不存在一种方案,输出"Uncertain".
    输入样例
    3
    112
    233
    1
    输出样例
    22
    35
    Uncertain
    Hint
    对于第一组数据,最优方案是将112 112 112分成21 21 21和1 1 1,最大的和为21+1=22 21 + 1 = 22 21+1=22。
    
    对于第二组数据,最优方案是将233 233 233分成2 2 2和33 33 33,最大的和为2+33=35 2 + 33 = 35 2+33=35。
    
    对于第三组数据,显然无法将一个数位分成两部分。
    
    建议使用效率较高的读入方式。

    题意:bc两周年 中文题意 将一个整数(1e10000000) 各个数位重新排列,并将其分成两个不含前导零的正整数。使得和最大 并输出最大的和

    题解:分为两个不含前导零的整数 若整数中不为零的位数小于2则无法满足条件则输出Uncertain
    分析可知 将这个整数分为 一个数只含有一位非零的最小的数 另一个数按照从大到小的顺序排列使得数最大 然后大数模拟求和

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<queue>
     5 #include<stack>
     6 #include<vector>
     7 #include<map>
     8 #include<algorithm>
     9 #define ll __int64
    10 #define mod 1e9+7
    11 #define PI acos(-1.0)
    12 using namespace std;
    13 const int  inf =  (1<<30) - 10;
    14 int t;
    15 char a[10000005];
    16 int b[10000005];
    17 int ans[10000005];
    18 int main()
    19 {
    20     scanf("%d",&t);
    21     for(int i=1;i<=t;i++)
    22     {
    23         cin>>a;
    24         int minx=10;
    25         int len=strlen(a);
    26         int flag=0;
    27         for(int j=0;j<len;j++)
    28         {
    29             if(a[j]!='0')
    30                 flag++;
    31             b[j]=a[j]-'0';
    32             if(b[j])
    33             minx=min(minx,b[j]);
    34         }
    35         if(flag<2)
    36             {
    37                 cout<<"Uncertain"<<endl;
    38                 continue;
    39             }
    40         sort(b,b+len);
    41         int flg=0;
    42         int zha=0;
    43         int be=minx;
    44         for(int j=0;j<len;j++)
    45         {
    46             if(b[j]==minx&&flg==0)
    47             {
    48 
    49                 zha=j;
    50                 flg=1;
    51                 continue;
    52             }
    53             ans[j]=(be+b[j])%10;
    54             be=(be+b[j])/10;
    55         }
    56       if(be)
    57         cout<<be;
    58       for(int j=len-1;j>zha;j--)
    59         cout<<ans[j];
    60       for(int j=zha-1;j>=0;j--)
    61         cout<<ans[j];
    62       cout<<endl;
    63 
    64     }
    65   return 0;
    66 }
     
  • 相关阅读:
    Java集合框架
    常见异常--被解码的 URI 不是合法的编码
    BigDecimal使用以及异常处理
    文章标题--再识HTML5
    【转】解决$Proxy0 cannot be cast to java.sql.Connection异常
    Response-->cookie的添加和删除
    自定义标签---TLD约束文件格式说明
    XML约束文件---DTD文件
    JavaScript——注册表单参考模板(含参数格式校验)
    java的可序列化(转载)
  • 原文地址:https://www.cnblogs.com/hsd-/p/5680705.html
Copyright © 2020-2023  润新知