hdu 5718 Oracle(模拟)
来源:互联网 发布:沈阳网络拍卖公共平台 编辑:程序博客网 时间:2024/05/07 15:34
Oracle
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 43 Accepted Submission(s): 22
Problem Description
There is once a king and queen, rulers of an unnamed city, who have three daughters of conspicuous beauty.
The youngest and most beautiful is Psyche, whose admirers, neglecting the proper worship of the love goddess Venus, instead pray and make offerings to her. Her father, the king, is desperate to know about her destiny, so he comes to the Delphi Temple to ask for an oracle.
The oracle is an integern without leading zeroes.
To get the meaning, he needs to rearrange the digits and split the number into <b>two positive integers without leading zeroes</b>, and their sum should be as large as possible.
Help him to work out the maximum sum. It might be impossible to do that. If so, print `Uncertain`.
The youngest and most beautiful is Psyche, whose admirers, neglecting the proper worship of the love goddess Venus, instead pray and make offerings to her. Her father, the king, is desperate to know about her destiny, so he comes to the Delphi Temple to ask for an oracle.
The oracle is an integer
To get the meaning, he needs to rearrange the digits and split the number into <b>two positive integers without leading zeroes</b>, and their sum should be as large as possible.
Help him to work out the maximum sum. It might be impossible to do that. If so, print `Uncertain`.
Input
The first line of the input contains an integer T (1≤T≤10) , which denotes the number of test cases.
For each test case, the single line contains an integern (1≤n<1010000000) .
For each test case, the single line contains an integer
Output
For each test case, print a positive integer or a string `Uncertain`.
Sample Input
31122331
Sample Output
2235UncertainHintIn the first example, it is optimal to split $ 112 $ into $ 21 $ and $ 1 $, and their sum is $ 21 + 1 = 22 $.In the second example, it is optimal to split $ 233 $ into $ 2 $ and $ 33 $, and their sum is $ 2 + 33 = 35 $.In the third example, it is impossible to split single digit $ 1 $ into two parts.
Source
BestCoder 2nd Anniversary
题意:给一个有10000000长的没有前导零的正整数,将这个大整数重新排列然后分裂成两个正整数,求最大的正整数之和思路: 如果可以分裂成两个正整数,那么其中一个肯定是最小的非0个位数,把字符串从大到小进行排序,我们肯定是取最小的非0那一位出来。这应该是显而易见的
然后只需要模拟就好了。 注意大整数进位的判断
代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;#define N 10000050char s[N];int main(){ int T; scanf("%d",&T); while(T--) { scanf("%s",&s); int len =strlen(s); sort(s,s+len); int k; int num=0; for(int i=0; i<len; i++) if(s[i]>'0') num++; if(num<2||len<2) printf("Uncertain\n"); else { int m; for(k=0; k<len; k++) if(s[k]>'0') { m=s[k]-'0'; for(int j=k+1; j<len; j++) s[j-1]=s[j]; break; } s[len-1]='0'; if(s[0]+m<='9') s[0]+=m; else { s[0]=s[0]+m-10; s[1]++; for(int i=1; i<len-1; i++) { if(s[i]<='9') break; s[i]=s[i]-'10'; s[i+1]++; } } if(s[len-1]>'0') printf("1"); for(int i=len-2;i>=0;i--) printf("%c",s[i]); printf("\n"); } } return 0;}
0 0
- hdu 5718 Oracle(模拟)
- HDU 5718 BestCoder 2nd Anniversary Oracle (模拟)
- hdu 5718 大数模拟
- hdu 3347(模拟)
- hdu 3344(模拟)
- hdu 2142 (模拟,,,)
- hdu 1034 (模拟)
- hdu 2526(模拟)
- hdu 2525(模拟)
- HDU EBCDIC(模拟)
- hdu 1571(模拟)
- HDU 5491(模拟)
- HDU 5499(模拟)
- hdu 5671(模拟)
- HDU 1266 (模拟)
- hdu 1029(模拟)
- HDU 5547 (模拟)
- HDU 5718 Oracle(大数)
- 快速矩阵幂+二分等比数列求和
- 数据结构二叉树的实现,前序、中序、后序遍历
- JAVA继承和多态
- POJ 3461 Oulipo [KMP模板题]
- IntelliJ Idea 常用快捷键列表
- hdu 5718 Oracle(模拟)
- python学习——HTMLParser
- hadoop平台之——下架节点服务器
- CSS布局之流体浮动布局
- java内部类种类解读
- 有人问我面向对象的思维用到产品中?什么鬼
- 文本分类的调研
- Paint研究
- 管理MAC地址转发表