题意

1<=a,b,c<=1e100000

思路:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
#define N 1100000
#define M 4100000
#define fi first
#define se second
#define MP make_pair
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1 const ll MOD=1e9+,inv2=(MOD+)/;
double eps=1e-;
int INF=1e9; char a[N],b[N],c[N];
int A[N],B[N],C[N],t[N],flag,la,lb,lc; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} void solve1()
{
int na=,nc=;
rep(i,,1e6+) A[i]=B[i]=C[i]=t[i]=;
rep(i,,1e6-la) A[++na]=;
per(i,la,) A[++na]=a[i]-'';
rep(i,,1e6-lc) C[++nc]=;
per(i,lc,) C[++nc]=c[i]-'';
int p=;
per(i,1e6,)
{
if(C[i]>A[i]) break;
if(C[i]<A[i]){p=; break;}
}
if(!p) return;
rep(i,,1e6)
{
t[i]=t[i]+C[i]-A[i];
if(t[i]<)
{
t[i+]--;
t[i]+=;
}
}
p=;
int k=1e6;
while(k>&&t[k]==) k--;
per(i,k/,) swap(t[i],t[k-i+]);
rep(i,,lb)
if((b[i]-'')!=t[i]){p=; break;}
if(p)
{
flag=;
printf("%d %d %d\n",-la,k-lb,-lc);
}
} void solve2()
{
if(flag) return;
rep(i,,1e6+) A[i]=B[i]=C[i]=t[i]=;
int nb=,nc=;
rep(i,,1e6-lb) B[++nb]=;
per(i,lb,) B[++nb]=b[i]-'';
rep(i,,1e6-lc) C[++nc]=;
per(i,lc,) C[++nc]=c[i]-'';
int p=;
per(i,1e6,)
{
if(C[i]>B[i]) break;
if(C[i]<B[i]){p=; break;}
}
if(!p) return;
rep(i,,1e6)
{
t[i]=t[i]+C[i]-B[i];
if(t[i]<)
{
t[i+]--;
t[i]+=;
}
}
p=;
int k=1e6;
while(k>&&t[k]==) k--;
per(i,k/,) swap(t[i],t[k-i+]);
rep(i,,la)
if((a[i]-'')!=t[i]){p=; break;}
if(p)
{
flag=;
printf("%d %d %d\n",k-la,-lb,-lc);
}
} void solve3()
{
if(flag) return;
rep(i,,1e6+) A[i]=B[i]=C[i]=t[i]=;
int na=,nb=,nc=;
rep(i,,1e6--la) A[++na]=;
per(i,la,) A[++na]=a[i]-'';
rep(i,,1e6--lb) B[++nb]=;
per(i,lb,) B[++nb]=b[i]-'';
rep(i,,1e6-lc) C[++nc]=;
per(i,lc,) C[++nc]=c[i]-'';
rep(i,,1e6)
{
t[i]=t[i]+A[i]+B[i];
if(t[i]>)
{
t[i]-=;
t[i+]++;
}
}
int p=;
rep(i,,1e6+)
if(t[i]!=c[i]){p=; break;}
if(p)
{
flag=;
printf("%d %d %d\n",--la,--lb,-lc);
}
} int main()
{
//freopen("1.in","r",stdin);
int cas;
scanf("%d",&cas);
while(cas--)
{
scanf("%s",a+);
scanf("%s",b+);
scanf("%s",c+);
la=strlen(a+),lb=strlen(b+),lc=strlen(c+);
//printf("la=%d lb=%d lc=%d\n",la,lb,lc);
flag=;
solve1();
solve2();
solve3();
if(!flag) printf("-1\n");
} return ;
}

最新文章

  1. Maven的配置和使用(二)
  2. ASP.NET MVC之文件上传【一】(八)
  3. linux有关信号的FAQ
  4. NSIS 让程序以管理权限运行
  5. Visual Studio 后期生成事件复制配置文件
  6. 两个实用的方法从Base64字符串生成RSAPublicKey及RSAPrivatekey
  7. 在xib中添加手势控件后运行可能会出现的错误
  8. Ubuntu通过APT配置开发环境
  9. java静态变量、静态方法和静态代码段
  10. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-002使用@Embeddable
  11. Python3缩进对逻辑的影响
  12. iOS--为视图添加阴影
  13. Oracle10g安装中遇到的错误及解决办法
  14. Alamofire网络库基础教程
  15. 一道360 crackme的破解
  16. Java 基础 IO流之序列化
  17. poj3258 River Hopscotch(二分最小值,好题)
  18. MapReduce Map数 reduce数设置
  19. Java并发编程笔记之ThreadLocal源码分析
  20. Ruby知识点三:运算符

热门文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_3_字节输出流_OutputStream类&amp;FileOutputStream
  2. C++笔记(4)——引用及结构体
  3. 应用安全-CTF-格式串漏洞
  4. 002/CDN-内容分发网络
  5. 关于NewJson dll 引用不一致
  6. windows10安装ipython
  7. 40-python基础-python3-字典常用方法-setdefault()
  8. 洛谷 - P3649 - 回文串 - 回文自动机
  9. 攻防世界--srm-50
  10. python基础篇(完整版)