题意:
不想说
坑点;
初始答案应该设置为一个极小的负数,不能设置为0。
代码:
#include <bits/stdc++.h>
using namespace std;
#include<stack>
#include<cstring>
char s[30];
typedef long long LL;
int a[30];
int ii=0;
void deal(){
scanf("%s",s);
int len=strlen(s);
LL zans=-1e10;
for (int i=0;i<len;i++) a[i]=s[i]-'0';
for (int q=0; ; q++){
LL ans,add,mins,mult,div;
div=0;
for (int i=len-1-q; i < len; i++) div = div * 10 + a[i];
mult=a[len-2-q];
mins=a[len-3-q];
LL cheng=mins*mult;
LL chu=cheng/div;
LL add1,ans1,ans2,add2;
add1=ans1=ans2=add2=0;
add1=a[len-4-q];
for (int i=0;i < len - 4 - q; i++) ans1=ans1*10+a[i];
ans1+=add1;
add2=a[0];
for (int i=1;i<len-4-q+1;i++) ans2=ans2*10+a[i];
ans2+=add2;
// cout<<q<<" "<<ans1<<" "<<ans2<<" "<<div<<endl;
ans2=ans2-chu;
ans1=ans1-chu;
if (zans<ans1) zans=ans1;
if (zans<ans2) zans=ans2;
if (len-4-q <= 1) break;
}
printf("Case #%d: %I64d\n",ii,zans);
}
int main()
{
int t;
scanf("%d",&t);
while(t--){
ii++;
deal();
}
return 0;
}