【链接】 我是链接,点我呀:)

【题意】

【题解】

```cpp
/*
for a[1] from 1~9
1*1=1 2*1=2 3*1=3
1*2=2 2*2=4 3*2=6
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12
1*5=5 2*5=10 3*5=15
1*6=6 2*6=12 3*6=18
1*7=7 2*7=14 3*7=21
1*8=8 2*8=16 3*8=24
1*9=9 2*9=18 3*9=27
use "c[i]" or "c[i]c[i+1]" % a[1]
if (c[i]%a[1]==0) then b[i] must be c[i]/a[1]
else if (c[i]c[i+1]%a[i]==0) b[i] must be c[i]c[i+1]/a[1]
they won't be true at the same time.
Because,when x*y>=10,x*y%10 10
so,c[i]=c[i]c[i+1]%10=10 even though c[i]c[i+1]%a[1]==0
```

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 2e5; int n,m,l;
char s[N+10];
int a[N+10],b[N+10],c[N+10]; bool test(int a1){
a[1] = a1; //get string b
int cur = 1;
for (int i = 1;i <= m;i++){//for b's each position
if (cur>l) return false;
//break limit,unaccpted
if (c[cur]%a1==0){//only one position
b[i] = c[cur]/a1;//get b[i]
cur++;
}else if (cur+1<=l && (c[cur]*10+c[cur+1])%a1==0){//twoposition
b[i] = (c[cur]*10+c[cur+1])/a1;//get b[i]
if (b[i]>=10) return false;
cur+=2;
}else return false;//no accpted
} //use b and c,get string a
for (int i = 2;i <= n;i++){
if (cur>l) return false; if (c[cur]%b[1]==0){
a[i] = c[cur]/b[1];
cur++;
}else if (cur+1<=l && (c[cur]*10+c[cur+1])%b[1]==0) {
a[i] = (c[cur]*10+c[cur+1])/b[1];
if (a[i]>=10) return false;
cur+=2;
}else return false; //got a[i] //use a[i] to check c[cur],c[cur+1]....
for (int j = 2;j <= m;j++){
if (cur>l) return false;
int _ju = a[i]*b[j];
//if (a1==2) printf("%d\n",_ju);
if (_ju<=9 && c[cur]==_ju){
cur++;
}else if ( _ju>=10 && c[cur]==(_ju/10) && cur+1<=l &&
c[cur+1]==(_ju%10) ) cur+=2;
else return false;
}
}
//
if (cur!=l+1) return false;
return true;
} int main(){
// freopen("rush.txt","r",stdin);
int T;
scanf("%d",&T);
while (T--){
scanf("%d%d",&n,&m);
scanf("%s",s+1);
l = strlen(s+1);
for (int i = 1;i <= l;i++) c[i] = s[i]-'0';
int ok = 0;
for (int i = 1;i <= 9;i++)
if (test(i)){
ok = 1;
break;
}
if (ok==0){
puts("Impossible");
}else{
for (int i = 1;i <= n;i++) printf("%d",a[i]);printf(" ");
for (int i = 1;i <= m;i++) printf("%d",b[i]);
puts("");
}
}
return 0;
}

【Zoj 4061】Magic Multiplication的更多相关文章

  1. 【hdu 1517】A Multiplication Game

    Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s) ...

  2. 【ZOJ4061】Magic Multiplication(构造)

    题意:定义一个新运算为两个数A,B上每一位相乘,然后顺次接在一起,现在给定结果C和原来两个数字的长度,要求恢复成原来的数字A,B 若有多解输出A字典序最小的,A相同输出B字典序最小的,无解输出Impo ...

  3. 【Codeforces 1117C】Magic Ship

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 我们可以把这个行船的过程分解成两个过程 1.船经过时间t被风吹到了某个地方 2.船用这t时间尝试到达终点(x2,y2) 会发现如果时间t能最终 ...

  4. 【ZOJ 4070】Function and Function

    [链接] 我是链接,点我呀:) [题意] [题解] 递归一会. 会发现最后肯定是0,1一直循环. 开始循环之后就直接返回结果就好. [代码] #include <bits/stdc++.h> ...

  5. 【ZOJ 4060】Flippy Sequence

    [链接] 我是链接,点我呀:) [题意] [题解] 按照两个区间的排列方式 我们可以分成以下几种情况 会发现这两个区间的作用 最多只能把两段连续不同的区间变为相同. 那么写个for处理出连续不相同的一 ...

  6. 【ZOJ 4067】Books

    [链接] 我是链接,点我呀:) [题意] [题解] 统计a中0的个数cnt0 然后m减去cnt0 因为这cnt0个0是一定会取到的. 如果m==0了 那么直接找到数组中的最小值mi 输出mi-1就好 ...

  7. 【ZOJ 4062】Plants vs. Zombies

    [链接] 我是链接,点我呀:) [题意] [题解] 二分最后的最大抵御值mid. 然后对于每个蘑菇. 都能算出来它要浇水几次mid/ai 然后如果第i个蘑菇没浇水达到要求次数. 就在i和i+1之间来回 ...

  8. 【ZOJ 3200】Police and Thief

    ZOJ 3200 首先我写了个高斯消元,但是消出来了一些奇怪的东西,我就放弃了... 然后只好考虑dp:\(dp[i][j][k]\)表示走到了第i步,到了\((j,k)\)这个节点的概率. 那么答案 ...

  9. 【ZOJ 3463】Piano

    ZOJ 3463 题意:有一个钢琴,一个人把左手放在L位置上,右手放在R位置上,要弹某\(n\)个键,每个手最多能够得着9个位置,并且两只手不能交叉.把手移动的代价是大拇指移动的距离的平方根.问弹完这 ...

随机推荐

  1. Microsoft ASP.NET SignalR

    SignalR类似与JavaScript实时框架,如Socket.IO.SignalR能够完成客户端向服务器的异步通信,并同时支持服务器向浏览器客户端推送事件.SignalR的连接通过日益流行的Web ...

  2. 明解C语言

    本文为阅读书籍<明解C语言-中级篇>所积累的知识点及编译书本代码时遇到的问题.部分对应代码在\Code_2018\BK_明解C语言目录下.每个代码内都含有程序功能.思路.疑惑点等内容,如有 ...

  3. C指针基础知识

    指针的声明 C语言声明格式:"类型 变量名;" 基本类型:int hoge; 指针类型:int *pointer; 区别在于: 声明 含义 int hoge; 声明整数类型的变量 ...

  4. thymeleaf公共页面元素抽取

    1.抽取公共片段 使用thymeleaf的th:fragment为样抽取的公共片段命名, 如下把div标签命名为 copy,就可以获取到div整个里的内容<div th:fragment=&qu ...

  5. 语法错误1:TabError: Inconsistent use of tabs and spaces in indentation

    如图错误: 出错原因: 由于写代码过程用的tab缩进 解决方法: 把tab缩进改用空格缩进

  6. Djnago进阶

    详情请戳 Cookie和Session及分页设置 Ajax Django中间件 Form和ModelForm组件 auth认证组件 Django 缓存的使用 Django 信号的使用 Django a ...

  7. .Net Core添加分布式Session

    一.Session HTTP是一个无状态协议,Web服务器将每一个请求都视为独立请求.并且不保存之前请求中用户的值. Session 状态是ASP.NET Core提供的一个功能,它可以在用户通应用访 ...

  8. 使用idea 搭建一个 SpringBoot + Mybatis + logback 的maven 项

    (注意项目名不能有大写......),把项目类型 改成 War 类型.(web项目) 使用 mybatis-generator 插件 生成 实体类 和 接口 在 resources 目录 中 新建一个 ...

  9. 页面中word文本框的编辑,两种方式

    大致效果图(对其中的功能可以增减): 实现方法1:调用js <link href="../../platform/js/kindeditor/themes/default/defaul ...

  10. CSS多列布局(实例)

    前言 一列布局 二列布局 三列布局 1 一列布局 一列布局: HTML部分 <!DOCTYPE html> <html> <head> <meta chars ...