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\n"); 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("\n"); 87 } 88 return 0; 89 }
时间: 2024-10-08 10:28:01