HDU 5718 Oracle

时间:2023-03-10 02:34:35
HDU 5718 Oracle

如果非零的数小于等于1个,则无解。否则有解。

取出一个最小的非零的数作为一个数,剩下的作为一个数,相加即可。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std; const int maxn=;
int T;
char s[maxn],ans[maxn];
int f[]; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
memset(f,,sizeof f);
for(int i=;s[i];i++) f[s[i]-'']++; int sum=;
for(int i=;i<=;i++) sum=sum+f[i];
int x; if(sum<=) { printf("Uncertain\n"); continue; }
else
{
for(int i=;i<=;i++)
{
if(f[i]==) continue;
x=i; f[i]--; break;
} }
int sz=;
for(int i=;i<=;i++)
while(f[i]--) ans[sz++]=i+'';
ans[sz++]=''; ans[sz++]='\0';
int len=strlen(ans);
int k=x;
for(int i=;i<len;i++)
{
int num=(ans[i]-''+k)%;
k=(ans[i]-''+k)/;
ans[i]=num+'';
} for(int i=len-;i>=;i--)
{
if(ans[i]!='')
{
for(int j=i;j>=;j--) printf("%c",ans[j]);
printf("\n");
break;
}
}
}
return ;
}