BestCoder 2nd Anniversary

http://acm.hdu.edu.cn/search.php?field=problem&key=BestCoder+2nd+Anniversary&source=1&searchmode=source

A

取最小的非零数,再相加

 1 // #pragma comment(linker, "/STACK:102c000000,102c000000")
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <sstream>
 6 #include <string>
 7 #include <algorithm>
 8 #include <list>
 9 #include <map>
10 #include <vector>
11 #include <queue>
12 #include <stack>
13 #include <cmath>
14 #include <cstdlib>
15 // #include <conio.h>
16 using namespace std;
17 #define clc(a,b) memset(a,b,sizeof(a))
18 #define inf 0x3f3f3f3f
19 #define lson l,mid,rt<<1
20 #define rson mid+1,r,rt<<1|1
21 const int N = 1e7+10;
22 const int MOD = 1e9+7;
23 #define LL long long
24 #define mi() (l+r)>>1
25 double const pi = acos(-1);
26 
27 void fre() {
28     freopen("in.txt","r",stdin);
29 }
30 
31 // inline int r() {
32 //     int x=0,f=1;char ch=getchar();
33 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
34 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
35 // }
36 
37 int a[N];
38 int main(){
39     int T;
40     scanf("%d",&T);
41     while(T--){
42         string s;
43         cin>>s;
44         int len=s.length();
45         int k=0;
46         int minn=inf;
47         int cnt=0;
48         for(int i=0;i<len;i++){
49              a[k++]=s[i]-'0';
50              if(minn>s[i]-'0'&&s[i]-'0'!=0){
51                 minn=s[i]-'0';
52              }
53              if(s[i]-'0'!=0){
54                 cnt++;
55              }
56         }
57         // cout<<minn<<endl;
58         if(cnt<2){
59             printf("Uncertain
");
60             continue;
61         }
62         sort(a,a+k);
63         int pos=lower_bound(a,a+k,minn)-a;
64         // cout<<pos<<endl;
65         // if(pos==0)
66         //     pos++;
67         // cout<<k<<endl;
68         for(int i=pos;i<k-1;i++){
69             a[i]=a[i+1];
70         }
71         // cout<<a[0]<<a[1]<<endl;
72         int b=0;
73         k-=2;
74         for(int i=0;i<=k;i++){
75             a[i]=(a[i]+minn+b)%10;
76             b=(a[i]+minn+b)/10;
77             minn=0;
78         }
79         // cout<<a[0]<<a[1]<<endl;
80         if(b){
81             a[++k]=b;
82         }
83         for(int i=k;i>=0;i--){
84             printf("%d",a[i]);
85         }
86         printf("
");
87     }
88     return 0;
89 }
View Code
原文地址:https://www.cnblogs.com/ITUPC/p/5679698.html